使用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'