2014-11-20 40 views
0

我需要測試一個字符串中的條件。我在下面使用一個簡單的條件來簡化這個例子。但是即使這個簡單的例子在條件被添加後也不起作用。我究竟做錯了什麼?如何在字符串中添加條件?

SELECT '<p><input type="checkbox" name_' + CAST(mt.personid AS VARCHAR) + 
    CASE WHEN 1=1 THEN 
    'checked' + 
    END 
    '></p>' AS MyContent 
from mytable mt 

錯誤:

Incorrect syntax near the keyword 'END' 

如果我 '檢查' 後取出加,我得到:

Incorrect syntax near the keyword 'AS' 
+0

你沒有結束你的'CASE'表達?'CASE WHEN條件THEN東西[ELSE] somethingelse END'。另外,不要使用'CAST'來指定長度的varchar。另外,什麼「不起作用」在這裏意味着什麼,究竟發生了什麼? – Lamak 2014-11-20 18:10:19

+0

@Lamak:更新了OP。 – 4thSpace 2014-11-20 18:13:42

+0

好吧,你已經'檢查了'+ END',加號有錯,應該'檢查'END +' – Lamak 2014-11-20 18:14:39

回答

1

試試這個。

SELECT '<p><input type="checkbox" name_' + CAST(mt.personid AS VARCHAR) + 
    isnull(
    CASE 
    WHEN 1=1 THEN 'checked' 
    END, '') 
    + 
    '></p>' 
from mytable mt 

還是這個(學分@Lamak):

SELECT '<p><input type="checkbox" name_' + CAST(mt.personid AS VARCHAR) + 
    CASE 
    WHEN 1=1 THEN 'checked' 
    ELSE '' 
    END 
    + 
    '></p>' 
from mytable mt 
+0

是的 - 確實有效。但是如果你嘗試1 = 2的失敗條件,你會得到空輸出。它應該輸出沒有「檢查」的內容。至少這是我想要的。任何想法如何實現? – 4thSpace 2014-11-20 18:18:30

+2

@ 4thSpace'ELSE''END' – Lamak 2014-11-20 18:19:32

+0

不錯 - 謝謝你! – 4thSpace 2014-11-20 18:20:49

相關問題