我想知道SQL函数extractvalue()
和xmltype()
是否有机会在以下查询中执行,或者IN
运算符是否会将它们评估为字符串值
SELECT * FROM TABLE_1 WHERE (FIELD_1 IN ('foo','bar''||(select extractvalue(xmltype(''%gxgol;]>''),''/l'') from dual)||'''))
此查询在Oracle中不会引起任何错误,并且输出仅包含FIELD_1
等于'foo'
的行。
答案 0 :(得分:2)
否,将不执行字符串文字的内容。幸运的是。
您需要一个真正的子查询。像这样:
SELECT *
FROM TABLE_1
WHERE FIELD_1 IN (
SELECT 'foo' FROM DUAL
UNION ALL
SELECT 'bar' || extractvalue(bla,bla) FROM DUAL)
答案 1 :(得分:1)
如果您通过
打电话给他们立即执行
,是的,它们将被当作函数。
有关更多信息,https://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems017.htm