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