Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串转换为行的PL/SQL错误_Sql_Oracle_Oracle11g_Oracle10g - Fatal编程技术网

将字符串转换为行的PL/SQL错误

将字符串转换为行的PL/SQL错误,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,我试图将表中的一个字符串拆分成单独的行,然后在另一个表中查找这些值,看看哪些值不存在。这是我正在使用的代码: SELECT NAME, desc, LABEL, trim(x.column_value.extract('e/text()')) AS ID from table1 T1, table (xmlsequence(xmltype('<e><e>' || replace(str_work,' ','</e><e>')|| '</e

我试图将表中的一个字符串拆分成单独的行,然后在另一个表中查找这些值,看看哪些值不存在。这是我正在使用的代码:

SELECT NAME, desc, LABEL, trim(x.column_value.extract('e/text()')) AS ID
from table1 T1, table (xmlsequence(xmltype('<e><e>' || replace(str_work,' ','</e><e>')||  
'</e></e>').extract('e/e'))) x 

where 

    NOT EXISTS (SELECT *
        FROM
           tabl2 T2
        WHERE
           T1.ID = x.ID) AND t1.str_work IS NOT NULL);
我不知道问题出在哪里。我将感谢你的帮助和建议

谢谢。

(重点加上):

您可以使用列别名
c\u alias
,立即为 选择列表中的前一个表达式,以便列 以新标题显示。别名有效地重命名了select 查询持续时间的列表项别名可在中使用
orderby
子句,但不包括查询中的其他子句。

因此,您不能在子查询中引用
ID
别名。不过,该别名并非来自您标记为
x
的内联视图。我认为,通过重复子查询中的
trim
,可以解决这两个问题:

    NOT EXISTS (SELECT *
        FROM
           tabl2 T2
        WHERE
           T1.ID = trim(x.column_value.extract('e/text()')))
    AND t1.str_work IS NOT NULL);
但是这应该是指
T2.ID
——否则就没有相关性了

或者,您可以引入另一个内联视图来避免重复,但这可能会增加复杂性,但不会带来太多好处

    NOT EXISTS (SELECT *
        FROM
           tabl2 T2
        WHERE
           T1.ID = trim(x.column_value.extract('e/text()')))
    AND t1.str_work IS NOT NULL);