这是我的查询,并没有返回空值
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))
答案 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)'