使用sql developer查询以查找唯一记录是否存在,返回true或false
我想查询数据库中是否存在唯一记录。例如:使用sql developer查询以查找唯一记录是否存在,返回true或false,sql,oracle,oracle-sqldeveloper,spring-jdbc,Sql,Oracle,Oracle Sqldeveloper,Spring Jdbc,我想查询数据库中是否存在唯一记录。例如: SELECT externaleventid FROM event WHERE externaleventid = "XYZ". 如果XYZ不存在,则应返回为false,如果存在,则应返回为true。我正在使用SQLDeveloper和eclipse。我试着用 if exists (select externaleventid from event where externaleventid='XYZ') select 'True'
SELECT externaleventid
FROM event
WHERE externaleventid = "XYZ".
如果XYZ不存在,则应返回为false,如果存在,则应返回为true。我正在使用SQLDeveloper和eclipse。我试着用
if exists (select externaleventid from event where externaleventid='XYZ')
select 'True'
else
select 'False'
return
但它给了我一个语法错误和/或sql developer中预期的错误 不清楚您是在请求返回字符串“True”还是“False”的SQL语句,还是请求返回相同字符串的PL/SQL函数,还是请求返回实际布尔值的PL/SQL函数。布尔数据类型在12.1之前的SQL中不存在,所以我猜您不是在要求返回布尔值的SQL语句 如果需要一条SQL语句,可以执行以下操作
SELECT (CASE WHEN cnt >= 1
THEN 'True'
ELSE 'False'
END) result_str
FROM( SELECT COUNT(*) cnt
FROM event
WHERE externaleventid = 'XYZ' )
CREATE OR REPLACE FUNCTION does_exist(
p_externaleventid IN event.externaleventid%type
)
RETURN VARCHAR2
IS
l_cnt PLS_INTEGER;
BEGIN
SELECT COUNT(*)
INTO l_cnt
FROM event
WHERE externaleventid = p_externaleventid;
IF( l_cnt > 0 )
THEN
RETURN 'True';
ELSE
RETURN 'False';
END IF;
END;
如果您想要一个PL/SQL函数,您可能会执行以下操作
SELECT (CASE WHEN cnt >= 1
THEN 'True'
ELSE 'False'
END) result_str
FROM( SELECT COUNT(*) cnt
FROM event
WHERE externaleventid = 'XYZ' )
CREATE OR REPLACE FUNCTION does_exist(
p_externaleventid IN event.externaleventid%type
)
RETURN VARCHAR2
IS
l_cnt PLS_INTEGER;
BEGIN
SELECT COUNT(*)
INTO l_cnt
FROM event
WHERE externaleventid = p_externaleventid;
IF( l_cnt > 0 )
THEN
RETURN 'True';
ELSE
RETURN 'False';
END IF;
END;
从事件中选择nvl2maxexternaleventid,'True','False',其中externaleventid='XYZ'非常感谢。这个查询对我有用。当cnt>=1时选择CASE,然后选择'True'或'False'最终结果_strfrom SELECT COUNT*cnt FROM event,其中externaleventid='XYZ'