我已经定义了一个别名:
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')
另外,如果不是使用别名,我可以替换复杂的表达式吗?
非常感谢,帮助。
答案 0 :(得分:0)
操作顺序是
FROM
,
WHERE,
SELECT
,
ORDER 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
)