2014-11-20 6 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' ?,' случай, когда условие THEN что-то [ELSE] somethingelse END'. Кроме того, не используйте 'CAST' в varchar без указания длины. Кроме того, что означает «не работает» здесь ?, что именно происходит? – Lamak

+0

@ Lamak: Обновлен OP. – 4thSpace

+0

Ну, у вас есть '' checked '+ END', знак плюса - неправильный, он должен быть' 'checked' END + ' – Lamak

ответ

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, вы получите нулевой вывод. Он должен выводить содержимое без «checked». По крайней мере, это то, что я хотел бы. Любая идея, как это сделать? – 4thSpace

+2

@ 4thSpace 'ELSE '' END' – Lamak

+0

Ницца - спасибо человеку! – 4thSpace

Смежные вопросы