T-SQL:WHERE中的CASE语句?

时间:2011-09-27 09:32:14

标签: sql tsql case where

我目前在SQL查询中有以下WHERE子句:

WHERE c.Town LIKE '%' + @Town + '%'

我想做的是让第一个'%'成为可选项 - 所以如果用户选择仅按照以给定文本开头的记录进行过滤,那么WHERE就是

WHERE c.Town LIKE @Town + '%'

我认为最简单的方法就是CASE语句,但我似乎并不高兴,因为它看起来似乎是不正确的。我可以得到任何指示吗?这是我正在尝试的CASE声明:

WHERE c.Town LIKE (CASE WHEN @FilterOptions = 1 THEN '%' ELSE '') + @Town + '%'

3 个答案:

答案 0 :(得分:5)

你错过了END:

WHERE c.Town LIKE (CASE WHEN @FilterOptions = 1 THEN '%' ELSE '' END) + @Town + '%'

答案 1 :(得分:1)

CASE必须以END结尾。尝试

WHERE c.Town LIKE (CASE WHEN @FilterOptions = 1 THEN '%' ELSE '' END) + @Town + '%'

答案 2 :(得分:0)

案件应该结束。

我认为以下声明可以帮助您。

WHERE c.Town LIKE (CASE WHEN @FilterOptions = 1 THEN '%' ELSE '' END) + @Town + '%