2009-04-20 188 views

回答

1

使用聚结!

COALESCE(filter, '%') 

编辑:这可能是错误的做法,但我想这是一个选项。

4

取决于你所说的“不提供”的意思。如果这意味着NULL,你可以随时尝试

(
    Table.Column LIKE @myParameter 
OR 
    @myParameter IS NULL 
) 

我也发现这有时工作更快。

ISNULL(Table.Column, @myParameter) = @myParameter 

另外,如果你动态地从代码构建TSQL,只是ommit WHERE子句的一部分,如果你不具备的参数或“%”填充@myParameter。

0
SELECT 
lalala 
WHERE 1=1 
and (
    value like '%'[email protected]+'%' 
    or @search = '' 
) 

虽然我不知道这将如何执行?

+0

如果你有%两侧如果@search是“”反正那么它会匹配一切。在这种情况下,如果您正在进行完全匹配,则只需要OR。 – 2009-04-20 21:44:46

0

个人而言,这是哪门子的情况下,我会建立在VB/C#代码中的SQL语句,只是不如果我没有它,则在最后连接LIKE子句。

我刚才说的稍微发烧友的版本是有一个准备好的声明的两个版本,一种带有一个不LIKE子句,并调用相应的一个,因为你需要。