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,所以找不到。