昨天遇到一個問題,記錄一下,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,所以找不到。