Employee 表有 ID 和 NAME 列。名称可以重复。我想查明是否至少有一行名称为“kaushik%”。
所以查询应该返回 true/false 或 1/0。
是否可以使用单个查询找到它。
如果我们尝试类似的事情
select count(1) from employee where name like 'kaushik%'
在这种情况下,它不会返回 true/false。
我们还迭代表中的所有记录。简单的 SQL 中有没有办法,每当获取满足条件的第一条记录时,它就应该停止检查进一步的记录。
或者这样的事情只能在 Pl/SQL 块中处理?
EDIT *
通常,您可以将其表达为
SELECT COUNT(*)
FROM employee
WHERE name like 'kaushik%'
AND rownum = 1
哪里的rownum = 1
谓词允许 Oracle 在找到第一个匹配行后立即停止查找,或者
SELECT 1
FROM dual
WHERE EXISTS( SELECT 1
FROM employee
WHERE name like 'kaushik%' )
哪里的EXISTS
子句允许 Oracle 在找到第一个匹配行后立即停止查找。
第一种方法更紧凑,但在我看来,第二种方法更清晰,因为您实际上是在确定特定行是否存在,而不是尝试计算某些内容。但第一种方法也很容易理解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)