簡體   English   中英

如何在Oracle plsql中使用帶有count函數的大小寫

[英]how to use case with count function in oracle plsql

這是查詢,我想在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-“缺少關鍵字”

為此,請改用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通常比計數更有效,因為它可以停在匹配的第一行,而不是匯總整個表。

您缺少CASEEND

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似乎是一個date 如果是這樣,則不要將其與字符串(因為'01-feb-19'是字符串)進行比較,而不能與日期( date '2019-02-01'它是日期文字 ,由date關鍵字組成)進行比較和yyyy-mm-dd值)。

同樣,奇怪的是,您在該“日期”字符串中使用了UPPER ,但是您所有的名字都是小寫的。 嗯?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM