2015-06-14 24 views

回答

0

试试这个:

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

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

+0

我需要做的是:如果@Station ='Value'则返回所有匹配的行,否则如果Station = N'* '返回包括空值在内的所有值 – user3592986

+0

是的,我的查询完全符合您所谈论的内容。 –

0

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

你可以简单地比较,如果给定的参数是*或是否有必要进行比较,就像

@station=N'*' or [email protected] 
+0

你将如何查询值或空值?我到目前为止是在线程的顶部。 – user3592986

+0

我会照我写的去做。如果参数是*,则不必检查其他任何内容。如果不是,请查看列 –

+0

谢谢,(at)station = N'*'或station =(at)station返回所有值,包括空值,但是我想将它置于条件where语句'WHERE Station = CASE WHEN @Station ='N'*'THEN N'*'ELSE(at)Station END',这样如果(at)Station有一个非N'*'的值,那么返回该值,否则返回包括null的所有值 – user3592986

0

'其中(站= CASE WHEN @Station <> N' “THEN @Station END 或@Station =情况下@Station = N''Then N'*'END)'