首页 > 代码库 > 别名的使用注意,""真坑。

别名的使用注意,""真坑。

我们使用别名都是使用as关键字。

大多数时候我们都会省略as关键字,然后后面直接加别名就好了。我的习惯是别名用双引号括起来。

今天因为这个习惯坑了我一大波

 

首先oracle的别名的规则:

  AS 别名

  特殊字或者保留字啥的使用引号括起来别名

别名是在查询语句内,语句的执行顺序:

       1. FROM语句

                2. WHERE语句(结合条件)

                3. START WITH语句

                4. CONNECT BY语句

                5. WHERE语句

                6. GROUP BY语句

                7. HAVING语句

                8. MODEL语句

                9. SELECT语句

                10. UNION、MINUS、INTERSECT等集合演算演算

                11. ORDER BY语句

使用别名的时候可能由于执行顺序导致找不到列

 

还有,在子查询中最好不要用引号别名。会导致你的外面where无法使用你子查询得到伪表中的列,这个我也不清楚原因。

证据:

select * from 
(select 
            id, 
            create_date,  
            SUBSTR(channel,0,NVL(INSTR(channel, |, 1,1),0)-1) "sms_tag_id",
            SUBSTR(channel,NVL(INSTR(channel, |, 1,1),0)+1, length(channel)- NVL(INSTR(channel, |, 1,1),0)) "store_id",
            channel 
            from user_login 
            where 
            NVL(INSTR(channel, |, 1,1),0) != 0) u 
where u.store_id = platf.anzhi
执行报错:U.store_Id: invalid identifier

 当我去掉了双引号它就好了。我擦。

 

参考链接:http://www.cnblogs.com/godtrue/p/3791591.html

 

别名的使用注意,""真坑。