别名的使用注意,""真坑。
Posted guoDaXia的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了别名的使用注意,""真坑。相关的知识,希望对你有一定的参考价值。
我们使用别名都是使用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
以上是关于别名的使用注意,""真坑。的主要内容,如果未能解决你的问题,请参考以下文章
在 Elixir 中,为啥在导入模块时“别名”优于“导入”?