我必须连接两个字段并在where子句中使用连接字段,但它给了我无效的标识符。如何解决这个问题。
select i.FIRST_NAME || ' - ' || i.LAST_NAME as NAME, i.* from CONTACT i
where NAME = 'JOHN - HANKS'
这给了我
ORA-00904: "NAME": invalid identifier
00904. 00000 - "%s: invalid identifier"
答案 0 :(得分:4)
您不能在同一级别使用列别名。只需使用子查询(或重复表达式):
select c.*
from (select i.FIRST_NAME || ' - ' || i.LAST_NAME as NAME, i.*
from CONTACT i
) c
where c.NAME = 'JOHN - HANKS';
答案 1 :(得分:3)
WITH子句也是一个很好的选择,更好的可读性。此外,如果子查询要多次使用,那就更好了。
WITH data as(
select i.FIRST_NAME || ' - ' || i.LAST_NAME as NAME, i.* from CONTACT i)
select * from data where name = 'JOHN - HANKS';
答案 2 :(得分:-2)
选择i.FIRST_NAME || '-'|| i.LAST_NAME为NAME,i。*来自CONTACT i 其中i.first_name ||'〜'|| i.last_name ='JHON〜HANKS';