2016-09-30 104 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;