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

 

  

posted @ 2017-08-30 11:56  豆腐全家  阅读(2382)  评论(0编辑  收藏  举报