У меня есть хранимая процедура, где я обрабатываю часть столбца, если параметр не равен нулю.изменить значение в isnull
Проблема заключается в том, что значение, которое я ищу, смешивается в длинной строке других значений. Вот пример того, что строка может выглядеть следующим образом:
'...value=153139,example=xyz,param=15,morestuff=otherthings...' //ignore the actual names, it's just examples for SO
Так что это не будет работать, потому что потенциально может выбрать неправильную вещь (value=153139
вызовет матч, если @param = '15'
):
WHERE
[column] LIKE ISNULL(@param, [column])
Это Wouldn» т работы либо:
WHERE
[column] LIKE '%param=' + ISNULL(@param, [column]) + '%'
идеальным для меня было бы что-то вроде ISNULL(check_expression, replacement_if_null, replecement_if_not_null)
, но, насколько мне известно, что не существует ..
P.S. Я знаю, что способ хранения информации не является оптимальным, но это то, что использует система, и я должен работать с ним =/Так нет комментариев вроде «Вы должны разбить столбец так, чтобы он содержал только одно значение», пожалуйста,
Рассмотрение дела выглядит хорошо, я попробую. Другой не будет работать, потому что если @param имеет значение null, он попытается сопоставить '[column]' с ''% param =' + [column] + '%'' –
Почему бы не заменить [column] на что-то еще в ISNULL (@param, [column]) ??? –
Я пошел за вашим первым предложением, и он отлично работает =) Спасибо большое! –