簡體   English   中英

連接並在 where 子句中使用 oracle plsql

[英]Concatenate and use in where clause oracle plsql

我必須連接兩個字段並在 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"

您不能在同一級別使用列別名。 只需使用子查詢(或重復表達式):

select c.*
from (select i.FIRST_NAME || ' - ' || i.LAST_NAME as NAME, i.*
      from CONTACT i 
     ) c
where c.NAME = 'JOHN - HANKS';

WITH 子句也是一個很好的選擇,更好的可讀性。 另外,如果子查詢要被多次使用,那就更好了。

WITH data as(
   select i.FIRST_NAME || ' - ' || i.LAST_NAME as NAME, i.* from CONTACT i)
select  * from data where name = 'JOHN - HANKS';

選擇 i.FIRST_NAME || ' - ' || i.LAST_NAME as NAME, i.* from CONTACT i where i.first_name ||'~'||i.last_name = 'JHON~HANKS';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM