什么是下面的等效SQL Query的Oracle?
SELECT CAST(
   CASE WHEN EXISTS(SELECT * FROM theTable where theColumn like 'theValue%') THEN 1 
   ELSE 0 
   END 
AS BIT)
我只想要一个使用存在的oracle查询,它像上面一样返回0或1.
Flo*_*ita 13
相当于:
select count(*) 
from dual 
where exists (SELECT * FROM theTable where theColumn like 'theValue%')
这将显示相同的输出.刚删除CAST并添加了一个,FROM dual因为Oracle不允许使用SELECT和不使用查询FROM:
SELECT 
   CASE WHEN EXISTS(SELECT * FROM theTable where theColumn like 'theValue%') 
     THEN 1 
     ELSE 0 
   END 
FROM dual ;
在SQL-Fiddle测试
你可以这样写:
SELECT COUNT(*) FROM theTable WHERE theColumn LIKE 'theValue%' AND ROWNUM = 1
这将返回0-1并且优化器得知查询将针对第一行访问进行优化。