如何在SQL中获取IN运算符的所有匹配文本?

如何在SQL中获取IN运算符的所有匹配文本?,sql,oracle,in-operator,Sql,Oracle,In Operator,需要说明的是,下面是一个场景:我正在执行如下查询: 从uid所在的表名称中选择*(1、3、5、8、23、4、589…) uids的列表来自用户 是否有方法使用SQL获取列表中所有匹配的uids 我正在寻找Oracle SQL语法,但我也想知道通用数据库系统的语法 谢谢 更新 我想获取所有匹配的uids。例如,表中没有uid8和23的记录,输出应该是1、3、5、4、589…我确信我正确理解了您的问题。 如果您想知道,给定一个值列表,表中的值和表中的值是什么,您可以试试这个;您需要回答在临时表(或s

需要说明的是,下面是一个场景:我正在执行如下查询:

从uid所在的表名称中选择*(1、3、5、8、23、4、589…)

uid
s的列表来自用户

是否有方法使用SQL获取列表中所有匹配的
uid
s

我正在寻找Oracle SQL语法,但我也想知道通用数据库系统的语法

谢谢

更新


我想获取所有匹配的
uid
s。例如,表中没有uid
8
23
的记录,输出应该是1、3、5、4、589…

我确信我正确理解了您的问题。 如果您想知道,给定一个值列表,表中的值和表中的值是什么,您可以试试这个;您需要回答在临时表(或select union子句或类似的内容)中查找的值,然后与您的表进行左联接(TX这里是您的表)。这个脚本是为MSSQL提供的。如果这个解决方案是您要问的(您的问题不清楚),那么将它们转换为ORACLE应该很容易

输出:

ID_VAL      UID
----------- -----------
1           1
3           NULL
5           5
8           NULL
23          NULL
4           4
589         NULL
有没有办法使用SQL获取列表中所有匹配的UID

可以,使用您的查询,但只需获取
uid
列即可。如果不希望重复,请使用
DISTINCT
关键字:

SELECT DISTINCT uid
FROM   table_name
WHERE  uid IN ( 1, 3, 5, 8, 23, 4, 589 ... )
如果要将其放在逗号分隔的列表中:

SELECT LISTAGG( uid, ',' ) WITHIN GROUP ( ORDER BY uid ) AS uids
FROM   table_name
WHERE  uid IN ( 1, 3, 5, 8, 23, 4, 589 ... )

您的问题不清楚,因为您编写的查询似乎正是您所要求的。请添加示例输入和所需输出。我认为所问的问题类似于所有来自
SELECT*from table\u name,其中uid为(1,3,5,8,23,4,589…)
union
SELECT*from table\u name,其中uid为“1%”
union
SELECT*from table\u name,其中uid为“3%”等等@JCA_amella我说的对吗?简化(在列表中缩短),添加示例表数据,并指定预期结果-所有文本都是格式良好的文本。如果您选择这样做,您想了解什么?您的DML语句不是有效的Oracle语法。
SELECT LISTAGG( uid, ',' ) WITHIN GROUP ( ORDER BY uid ) AS uids
FROM   table_name
WHERE  uid IN ( 1, 3, 5, 8, 23, 4, 589 ... )