2012-07-26 100 views
1

返回一個常量作爲命名列所以我有一個現有的SQL表達式運行良好我還需要返回一個命名列,它將返回基於後綴存在的2個值之一串。不太熟悉SQL的所有細微差別,我似乎無法獲得返回的值 - 或SQL很高興。它是這樣的:SQL Server根據LIKE

DECLARE @LBC nvarchar(3) = 'LBC' 
DECLARE @CBD nvarchar(3) = 'CBD' 

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN 
@CBD 
ELSE (SELECT @LBC) AS [AssayType], 

它對AS關鍵字的誇大。嘗試使用具有類似錯誤的IF語句。

+1

歡迎堆棧溢出!請注意,標籤不能合併以創建概念。也就是說,結合標籤'sql'和'server'並不意味着你的問題是關於MS SQL Server的。有一個專門用於SQL Server的標籤。 – Charles 2012-07-26 14:40:38

回答

1

您錯過了您的案例表達式END

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN @CBD 
    ELSE @LBC END AS [AssayType], 
+0

擊敗了我1秒 - 但我有更多的信件在我的! :) – Hogan 2012-07-26 14:39:37

+0

哦 - 還要注意,這是一個case *表達式*,而不是case *語句*。 – ruakh 2012-07-26 14:41:05

+0

@ruakh - 謝謝澄清,我正在更新select語句的過程中。 – LittleBobbyTables 2012-07-26 14:41:44

2

你只需要一個終端(兩個CASE和IF)

此外,除去在SELECT(SELECT @LBC),所以你只要@LBC

DECLARE @LBC nvarchar(3) = 'LBC' 
DECLARE @CBD nvarchar(3) = 'CBD' 

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' 
    THEN @CBD 
    ELSE @LBC 
END AS [AssayType], 

IF tblWellReadingResult_7.test_code LIKE '%CBD%' THEN @CBD ELSE @LBC END AS AssayType, 
0

爲什麼選擇和變量?

更容易:

--select 
CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN 
'LBC' 
ELSE 'LBC' END AS [AssayType] --, and another fields 
-- From yourTable 
+0

也許這些查詢的其他部分正在改變? – Hogan 2012-07-26 14:43:17