Oracle的雙引號問題


昨天遇到一個問題,記錄一下,SQL如下:

  select tt.* from (
    
select u.chapter_id as "chapterId",        case when u.chapter_id=u.f_id then u.chapter_name else '123' end as "chapterName",
         u.update_time
as "updateTime"    from T_USER_INFO u ) tt   where tt.chapterName = 'haha';

此時報錯tt.chapterName未無效字符

那么首先判斷單雙引號及分號不是中文字符,發現問題還是出在chapterName上,執行除where條件以外的SQL是有結果的,

於是研究別名的雙引號是不是有問題,發現去除別名的雙引號后,整個SQL執行成功;

在百度之后了解到,Oracle里打雙引號是為了特殊字符(如:_,中文字符等)和嚴格區分大小寫的,如果不加的話會默認是大寫,所以在where里的chapterName去匹配的是CHAPTERNAME,所以找不到。

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM