Oracle SQL Alias用法

时间:2017-11-01 18:47:13

标签: sql oracle alias

我已经定义了一个别名:

concat(lower(DBO.tname.fname),lower(dbo.tname.lname)) as TNAME,

以后想要在正则表达式中使用TNAME:

REGEXP_LIKE (TNAME,'smith')

失败并显示错误:

ORA-00904: "TNAME": invalid indentifier

但是,如果我用原始表达式替换TNAME,一切都很好:

REGEXP_LIKE (concat(lower(DBO.tname.fname),lower(dbo.tname.lname)),'smith')

另外,如果不是使用别名,我可以替换复杂的表达式吗?

非常感谢,帮助。

1 个答案:

答案 0 :(得分:0)

操作顺序是 FROMWHERE, SELECTORDER BY 你把别名放在SELECT中。如果您在WHERE子句中进行比较REGEXP_LIKE (TNAME,'smith'),则无法识别它。

SELECT TNAME
FROM (
    SELECT concat(lower(DBO.tname.fname),lower(dbo.tname.lname)) as TNAME, some_other_cols
    FROM some_table
)