2016-09-28 114 views
0

我在使用條件的SELECT語句中拉條件數據時遇到了一些困難。SELECT中的嵌套Case表達式

有外部條件檢查值是否爲空,內部條件檢查值是否包含特定的一組字符。

select語句:

 refID = CASE externalID 
     WHEN IS NOT NULL THEN CASE internalType 
      WHEN CONTAINS(internalType,'B1') THEN 'C1' + externalID 
      WHEN CONTAINS(internalType,'B2') THEN 'C2' + externalID 
      ELSE 'Ext' 
      END 
     ELSE 'N/A' 
     END 

不幸的是,這段代碼運行並顯示錯誤消息 「不正確的語法附近,

+0

案例表達,不言。 – jarlh

+0

externalID不爲NULL的情況,那麼... – jarlh

+0

謝謝,但是這只是將錯誤推送到「CONTAINS附近的錯誤語法」 –

回答

4

移動領域進入的情況下

refID = CASE 
       WHEN externalID IS NOT NULL THEN 
        CASE 
          WHEN internalType like '%B1%' THEN 'C1' + externalID 
          WHEN internalType like '%B2%' THEN 'C2' + externalID 
          ELSE 'Ext' 
        END 
       ELSE 'N/A' 
      END 
+0

@ W.H我應該離開那個,methinks – JohnHC

+0

謝謝,這已經修復了它。不幸的是CONTAINS無法使用,因爲表格沒有編入索引。 –

1

結束

在這種情況下,您可以使用INSTR功能,

refID = CASE externalID 
    WHEN IS NOT NULL THEN CASE internalType 
     WHEN INSTR(internalType,'B1') THEN 'C1' + externalID 
     WHEN INSTR(internalType,'B2') THEN 'C2' + externalID 
     ELSE 'Ext' 
     END 
    ELSE 'N/A' 
    END 

INSTR - instring函數檢查所需的字符串或模式,並且處理該數據

+0

您需要使用INSTR功能進行準確的模式檢查 –

+0

謝謝,太好了!工作正常。 –

+0

我很樂意幫助你 –