连接并使用where子句oracle plsql

时间:2014-10-25 13:52:41

标签: sql oracle

我必须连接两个字段并在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"

3 个答案:

答案 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';