2014-04-08 31 views
0

为什么意外的结果 “存在”, “extractValue一起” 和 “不为空”

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?

编辑:通过与提取物代替extractValue一起,我拿1 ...

+3

你的第二个查询返回1给我。 – Noel

+0

这是我的版本(select * from v $ version),我得到了0: Oracle数据库11g版本11.2.0.2.0 - 64位生产 PL/SQL版本11.2.0.2.0 - 生产 “核心\t 11.2 .0.2.0 \t生产“ 适用于Linux的TNS:版本11.2.0.2.0 - 生产 NLSRTL版本11.2.0.2.0 - 生产 – yohannc

回答

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;