使用“exists”,“extractvalue”和“not not null”时出现意外结果

时间:2014-04-08 15:01:38

标签: sql oracle11g

为什么

SELECT 1  FROM dual where extractvalue(xmltype('<A>1</A>'),'A') IS not NULL

返回1

SELECT count(*)
FROM dual
WHERE  EXISTS
  (
  SELECT 1  FROM dual where extractvalue(xmltype('<A>1</A>'),'A') IS not NULL
  );

返回0?

编辑:通过用extract替换extractvalue,我得到1 ......

1 个答案:

答案 0 :(得分:1)

extractvalue已弃用

你可以试试这个:

SELECT count(*)
FROM (select '<A>1</A>' as data from dual),xmltable('A' passing xmltype(data) columns result varchar2(1028) path '.')
WHERE 
result is not null;