У меня есть хранимая процедура, в которой я ищу часть столбца, если параметр не равен нулю.
Проблема в том, что значение, которое я ищу, замешано в длинной строке других значений. Вот пример того, как может выглядеть строка:
'...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])
Это тоже не сработает:
WHERE
[column] LIKE '%param=' + ISNULL(@param, [column]) + '%'
Идеальной вещью для меня было бы что-то вроде ISNULL(check_expression, replacement_if_null, replecement_if_not_null)
, но, насколько мне известно, этого не существует..
P.S. Я знаю, что способ хранения информации не оптимален, но это то, что использует система, и мне приходится с этим работать =/ Поэтому никаких комментариев типа «Вы должны разделить столбец так, чтобы он содержал только одно значение», пожалуйста.