我在Oracle中有一个函数,它将逗号分隔的字符串转换为值表。它通常被称为:
SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table('abc,123,def,456'));
此调用将返回一个包含四行的表:
COLUMN_VALUE
abc
123
def
456
我多次使用这个来接受来自前端网页的多值参数,将参数转换为表格,然后加入表格来过滤我的结果,如下所示:
SELECT *
FROM MYTABLE m
INNER JOIN (
SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table('abc,123'))
) f ON M.STATUS = F.COLUMN_VALUE
现在,问题是......我正在编写一个独立的SQL。我想使用这个Comma_String_To_Table函数来过滤我的结果,就像上面的例子一样,除了我希望传递给函数的值是SELECT语句的结果。即:
SELECT *
FROM MYTABEL m
INNER JOIN (
SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table(SELECT VALUE FROM APPSETTING WHERE APPSETTINGID = 76))
) f ON M.STATUS = F.COLUMN_VALUE
SQL SELECT VALUE FROM APPSETTING WHERE APPSETTINGID = 76
会产生一个以逗号分隔的字符串值。
我得到的错误是:
ORA-00936: missing expression
非常感谢任何帮助实现这一目标的帮助。
答案 0 :(得分:4)
试试这个:
SELECT *
FROM MYTABEL m
INNER JOIN (
SELECT DISTINCT COLUMN_VALUE
FROM TABLE (SELECT Comma_String_To_Table(VALUE)
FROM APPSETTING WHERE APPSETTINGID = 76)
) f ON M.STATUS = F.COLUMN_VALUE