如何在Oracle plsql中使用带有count函数的大小写

时间:2019-02-18 10:28:25

标签: sql oracle oracle11g

这是查询,我想在oracle中使用带count函数的case语句。

  Select case when count(*) > 0 then 'doSomething' else 'doSomething'  
    from student where student_name='faizan ahmed' and student_father='ahmed' and UPPER(student_dob)=UPPER('01-FEB-19');

请使用plsql代码为我提供帮助。

  

ORA-00905:缺少关键字   00905. 00000-“缺少关键字”

2 个答案:

答案 0 :(得分:2)

为此,请改用exists

Select (case when exists (select 1
                          from student
                          where student_name = 'faizan ahmed' and
                                student_father = 'ahmed' and
                                upper(student_dob) = upper('01-FEB-19');
             then 'doSomething'
             else 'doSomethingElse' 
       end)
from dual;

EXISTS通常比计数更有效,因为它可以停在匹配的第一行,而不是汇总整个表。

答案 1 :(得分:0)

您缺少END的{​​{1}}:

CASE

如果您格式化编写的代码,则更容易发现。

除此之外,SELECT CASE WHEN COUNT (*) > 0 THEN 'doSomething' ELSE 'doSomething' END --> This FROM student WHERE student_name = 'faizan ahmed' AND student_father = 'ahmed' AND UPPER (student_dob) = date '2019-02-01' -- No! UPPER ('01-FEB-19'); 似乎是一个日期。如果是这样,则不要将其与字符串(因为STUDENT_DOB是字符串)进行比较,而不是与日期('01-feb-19'-它是 date文字,由date '2019-02-01'关键字和date值)。

此外,您在该日期字符串中使用yyyy-mm-dd很奇怪,但是您所有的名字都是小写的。嗯?