2016-09-30 106 views
0

這可能是一個有點混亂,所以請與我裸露;)我運行一個簡單的查詢:SQL條件列選擇

Select "ID", "Original_ID" from table; 

,並且讓我這個:

ID  | Original_ID 
56917659 | #56906230 Captain 
56781961 | #56754164 Shipment Management 
56794542 | #56620028 Team Member 
56655028 | #50817965 Commercial Owner 
56258156 | Process Expert           
55780912 | Process Expert  

然後我可以使用此:

select "ID", substr("Original_ID",2,8)as "Original_ID" from table; 


ID  | Original_ID 
56917659 | 56906230 
56781961 | 56754164 
56794542 | 56620028 
56655028 | 50817965 
56258156 | rocess E 
55780912 | rocess E 

我需要的是一個第三列 「True_ID」 這表明SUBSTR( 「Original_ID」,2,8)爲 「True_ID」,但只有如果「Original_ID」以'#'開始,如果不是僅僅顯示「ID」中的值。我正在使用dashDB。

回答

1

使用CASE WHEN,以決定是否的Original_ID第一個字符是#

select 
    ID 
    , substr(Original_ID,2,8) as Original_ID 
    , CASE WHEN substr(Original_ID, 1, 1) = '#' 
      THEN substr(Original_ID, 2, 8) 
      ELSE 'ID' END as True_ID 
from table; 
+0

謝謝。我只是做了一個小小的改變: CASE WHEN substr(Original_ID,1,1) 除了像魅力一樣工作,謝謝 –

+0

@MikePala我編輯了我的文章 – rbr94

1

您可以用LEFT功能的話,簡單的完成:

SELECT 
    ID, 
    SUBSTR(Original_ID,2,8) as Original_ID, 
    CASE WHEN LEFT(Original_ID, 1) = '#' 
     THEN SUBSTR(Original_ID, 2, 8) 
     ELSE ID 
    END AS True_ID 
FROM table;