改变 isnull 中的值
alter value in isnull
我有一个存储过程,如果参数不为空,我将在其中搜索列的一部分。
问题是我要搜索的值混在一长串其他值中。下面是一行的示例:
'...value=153139,example=xyz,param=15,morestuff=otherthings...' //ignore the actual names, it's just examples for SO
所以这不会起作用,因为它可能 select 错误的事情(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。我知道信息的存储方式不是最佳的,但它是系统使用的方式,我必须使用它 =/ 所以不要像 "You should split the column up so that it only contains one value" 这样的评论
你试过case语句了吗:
case when check_expression is null then replacement_if_null else replecement_if_not_null end
或
[column] LIKE '%param=' + ISNULL(@param, [column]) + ',%' -- comma added before the last %
如有必要,请使用 @param 并确保您没有在值周围隐藏 space(rtrim 或 ltrim 可用于删除它们)
我有一个存储过程,如果参数不为空,我将在其中搜索列的一部分。
问题是我要搜索的值混在一长串其他值中。下面是一行的示例:
'...value=153139,example=xyz,param=15,morestuff=otherthings...' //ignore the actual names, it's just examples for SO
所以这不会起作用,因为它可能 select 错误的事情(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。我知道信息的存储方式不是最佳的,但它是系统使用的方式,我必须使用它 =/ 所以不要像 "You should split the column up so that it only contains one value" 这样的评论
你试过case语句了吗:
case when check_expression is null then replacement_if_null else replecement_if_not_null end
或
[column] LIKE '%param=' + ISNULL(@param, [column]) + ',%' -- comma added before the last %
如有必要,请使用 @param 并确保您没有在值周围隐藏 space(rtrim 或 ltrim 可用于删除它们)