日期:2014-05-17  浏览次数:21047 次

在oracle里用as重命名了一个字段后,这个名字能用在这个sql里吗?
select instr(t.id,'&') as m_id, substr(id,m_id,5) from table1


像上面这样m_id作为重命名的字段名,能用在后面的substr里吗?因为有时instr(t.id,'&')这类的函数比较长,重复的写,会让sql很难看。

------解决方案--------------------
不能 除非在嵌套一次
SQL code

select m_id,substr(id,m_id,5) 
from
(select instr(t.id,'&') as m_id from table1)

------解决方案--------------------
能不能你试下就晓得了。
我帮你试过了,会报错:不能识别m_id。
如果你有很多地方要用instr(t.id,'&')的话就在外面再套一层select吧
------解决方案--------------------
在一句sql里面重命名的字段 不能识别出来
------解决方案--------------------
不可以这样使用。
但可以变通,请参考:
Python code

SELECT SUBSTR(ID, m_id, 5)
FROM (selectt INSTR(t.id, '&') AS m_id FROM table1);