gpt4 book ai didi

带有本地(内联)数组的 SQL 语句

转载 作者:行者123 更新时间:2023-12-04 14:06:06 24 4
gpt4 key购买 nike

在许多语言中,可以使用内联值列表,并使用与此类似的某种形式的代码:

for x in [1,7,8,12,14,56,123]:
print x # Or whatever else you fancy doing

在过去一年左右的时间里使用 SQL,我发现即使在 WHERE 中使用这样的数组也不是问题......
select * 
from foo
where someColumn in (1,7,8,12,14,56,123) and someThingElse...

...我还没有找到从内联数组中获取数据的等效形式:
-- This is not working
select *
from (1,7,8,12,14,56,123)
where somethingElse ...

寻找解决方案,我只发现有人建议使用工会汤:
select *
from (SELECT 1 UNION SELECT 1 UNION SELECT 7 UNION ...)
where somethingElse ...

...这可以说是丑陋而冗长的。

我可以在我的编辑器 (VIM) 中通过几次按键快速从列表中生成 UNION 汤,然后将其粘贴回我的数据库提示 - 但我想知道我是否缺少其他方法来完成此操作。

此外,如果没有标准的方法来做到这一点,我仍然会对特定于数据库引擎的解决方案(Oracle、PostgreSQL 等)感兴趣

在此先感谢您的指点。

最佳答案

行/表值构造函数有时可以用作短手,例如在 MSSQL 中:
select * from (values (1),(7),(8),(12)) as T (f)
与传递给 in () 的简单的类似数组的列表相比,语法必然更复杂。因为它必须能够描述多维数据集:
select * from (values (1, 'a'),(7, 'b'),(8, 'c'),(12, 'd')) as T (f, n)
当然,当您发现需要列出文字值时,将它们放在一个表中并查询它们通常是个好主意。

关于带有本地(内联)数组的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com