【发布时间】:2012-04-17 06:55:43
【问题描述】:
是否可以在 where 语句 @Age 参数中做类似这里发生的事情?
@AGE Varchar(8)
SELECT NAME FROM TABLE WHERE
(
If @AGE='man'
then (AGE = 'man' or AGE = 'boy')
else (AGE = 'man')
)
AND City IS NULL
【问题讨论】:
-
AGE='man' OR (@AGE='MAN' and AGE='boy')? -
@Damien_The_Unbeliever:我不认为它那么简单,例如考虑当
@AGE = 'man'和AGE = 'boy'OP 的搜索条件为真而你的搜索条件为假。 —— -
@onedaywhen:为什么,这是真的。第一个比较产生 False,第二个和第三个产生 True。最后两者的合取也产生真,假和真的析取同样是真。
-
@AndriyM:不知道你说的第一、第二和第三是什么意思。对于我给出的案例中的值,
If @AGE='man' then (AGE = 'man' or AGE = 'boy')将评估为 TRUE,并且不会测试ELSE条件。 -
@AndriyM: ...我在答案中添加了一些测试代码。
标签: sql sql-server sql-server-2008