2015-12-03 20 views
0

如何在SQL SELECT語句執行IF...THEN嗎?我可以改變Case..then到IF..THEN,我在Case..then如何在SQL SELECT中執行CASE語句?

DECLARE @Display Varchar(10) SET @Display = '210120' 
DECLARE @ret  Varchar(5) SET @ret  = '12345' 
DECLARE @ret2 Varchar(5) SET @ret2 = '6789' 

DECLARE @Custom2 Varchar(10) 
SELECT (CASE 
      WHEN CHARINDEX(LEFT(@Display, 1),@ret) > 0 THEN 
       SET @Custom2 = 'None' 
      WHEN CHARINDEX(LEFT(@Display, 1),@ret2) > 0 THEN 
       SET @Custom2 = @ret+'_'[email protected] 
     END) as Custom 

一些錯誤預先感謝您

+3

不要嘗試在選擇查詢中設置變量。 –

+1

'CASE'是一個**表達式**(比如'a + b'),它返回一個**單個原子值** - 它不是一個可以處理代碼塊和類似東西的流控制語句*。 –

+0

提示:「CASE」表達式可能還有一個「ELSE」子句來處理任何意外的數據。 – HABO

回答

0

你在這裏發生的事情不匹配。您不能像使用案例表達式一樣控制流程,但是您也可以將其作爲列。這是不完全清楚你在這裏做什麼,但也許這會有所幫助。

DECLARE @Display Varchar(10) SET @Display = '210120' 
DECLARE @ret  Varchar(5) SET @ret  = '12345' 
DECLARE @ret2 Varchar(5) SET @ret2 = '6789' 

SELECT CASE WHEN CHARINDEX(LEFT(@Display, 1),@ret) > 0 THEN 
       'None' 
      WHEN CHARINDEX(LEFT(@Display, 1),@ret2) > 0 THEN 
       @ret+'_'[email protected] 
     END as Custom 
0

你的語法稍有請試試這個:

SELECT @Custom2 = CASE WHEN CHARINDEX(LEFT(@Display, 1),@ret) > 0 
         THEN 'None' 
        WHEN CHARINDEX(LEFT(@Display, 1),@ret2) > 0 
         THEN @ret + '_' + @Display 
        END As Custom