如何通过所有匹配值或所有值和空值筛选SQL查询

时间:2015-06-14 18:45:52

标签: sql-server

这是我的查询,并没有返回空值

SELECT St.Station
FROM Stations as st

where ((Station = CASE 
    WHEN @Station = N'*' 
    THEN Station 
    ELSE @Station END)
  OR (Station = CASE 
     WHEN @Station = N'*' 
     THEN null
     ELSE @Station END))

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT St.Station
FROM Stations as st
WHERE Station = @Station OR @Station = N'*'

如果您通过'*',那么@Station = N'*'将评估为true并将选择所有行,否则它将按@Station变量的值进行过滤。

答案 1 :(得分:0)

NULL值无法与=运算符进行比较,因为它们不等于任何东西,甚至是另一个NULL。您需要使用IS NULL进行比较。

您可以简单地比较给定参数是*还是需要进行比较,例如

@station=N'*' or station=@station

答案 2 :(得分:0)

'where(Station = CASE WHEN @Station<> N''那么@Station END         或@Station =案例@Station = N''然后N'*'END)'