我在这里遇到了一个特定的问题,我从一个像',90132988,90133148,72964884,'
这样的列中获取ID。假设这个值存储在Table1的ColumnA列中。
我想在另一个使用IN子句的查询中使用它。
SELECT *
FROM USER_GROUP
WHERE ID IN (SELECT CONCAT(CONCAT('(',REPLACE(LTRIM(RTRIM(REPLACE(COLUMNA, ',', ' '))), ' ', ',')),')') FROM Table1)
运行此查询时,出现无效数字错误。有什么建议吗?
答案 0 :(得分:1)
您收到数字错误,因为id
是数字。因此,Oracle明智地假设子查询返回数字。
我认为您想要的逻辑是:
SELECT ug.*
FROM USER_GROUP ug
WHERE EXISTS (SELECT 1
FROM Table1 t1
WHERE t1.COLUMNA LIKE '%,' || ug.ID || ',%'
);
我强烈建议您不要将数字列表存储为字符串。每个数字只存储一行。确实要简单得多,并且生成的代码将更加有效。
答案 1 :(得分:0)
您可以尝试使用../
转换“ ID”,但是如果有索引,则将失去对ID的任何使用。
_frontend