2016-08-31 70 views
-1

基本上,我想將字符串存儲在變量中。但我想從其他地方獲取一些內容,例如取決於條件的一些變化結果。字符串中的case語句

示例。
我有3名學生 - a,b,c。所以在這裏。

DECLARE @intro nvarchar(80) = 'Hi!!! My Name is ' + 
      CASE WHEN 'a' THEN 'Ashley' WHEN 'b' THEN 'Bernard' WHEN 'c' THEN 'Cassie' 

但是加號給出錯誤。我知道我可以通過上面提到的case語句創建另一個變量併爲其添加值,並將其置於case語句中,但是我想知道是否有其他方法可以不使用新變量?

在此先感謝

+0

請張貼整個查詢和錯誤消息 – Lamak

+0

'情況下,當「a''沒有測試任何東西 - 你有什麼測試,看它是否是‘A’?它應該是'case'的形式,當somefield ='a'then ...'或者'當'a'的情況下'case then'...'。如前所述,您必須將'end'關鍵字用於完成case語句 – SlimsGhost

+0

除非這是一個旨在讓您學習如何使用CASE語句的類分配,否則這看起來像是一種代碼味道。考慮創建一個名稱表,做一個'INNER JOIN'。此外,'CASE'的語法是'CASE WHEN'...您錯過了'something',它將根據'WHEN'值進行測試。 –

回答

0

你是不是在你的case語句比較什麼...嘗試這樣的事情,而不是與之相比你的學生是要將所要檢查的邏輯什麼都。

DECLARE @student char(1) = 'b' 
DECLARE @intro nvarchar(80) = 'Hi!!! My Name is ' 
SET @intro = @intro + 
        CASE 
         WHEN @student = 'a' THEN 'Ashley' 
         WHEN @student = 'b' THEN 'Bernard' 
         WHEN @student = 'c' THEN 'Cassie' 
         ELSE '' 
        END 

SELECT @intro 
1

您的CASE WHEN條件應與2值進行比較。

DECLARE @student char(1) = 'c' 
DECLARE @intro nvarchar(80) = 'Hi!!! My Name is ' + 
      CASE @student WHEN 'a' THEN 'Ashley' WHEN 'b' THEN 'Bernard' WHEN 'c' THEN 'Cassie' END 
SELECT @intro 
相關問題