我需要创建一个使用LIKE关键字过滤结果集的SQL语句。有时此值为NULL。
在T-SQL中实现的最佳方法是什么?我正在使用SQL Server 2005
答案 0 :(得分:4)
取决于“未提供”的含义。如果这意味着NULL,您可以随时尝试
(
Table.Column LIKE @myParameter
OR
@myParameter IS NULL
)
我也发现这有时会更快。
ISNULL(Table.Column, @myParameter) = @myParameter
或者,如果从代码动态构建TSql,如果没有参数,则只省略WHERE子句的那部分,或者使用'%'填充@myParameter。
答案 1 :(得分:1)
使用coalesce!
COALESCE(filter, '%')
编辑:这可能是错误的做法,但我想这是一个选择。
答案 2 :(得分:0)
SELECT
lalala
WHERE 1=1
and (
value like '%'+@search+'%'
or @search = ''
)
虽然我不确定它会如何表现......
答案 3 :(得分:0)
就个人而言,这是我在VB / C#代码中构建SQL语句的情况,如果我没有它,就不会在最后连接LIKE子句。
我刚才所说的稍微更有趣的版本是有两个版本的预准备语句,一个有一个没有LIKE子句,并且根据需要调用适当的一个。