SELECT 1 AS Saleable, *
FROM @Product
WHERE ( Obsolete = 'N' OR InStock = 'Y' )
UNION
SELECT 0 AS Saleable, *
FROM @Product
WHERE NOT ( Obsolete = 'N' OR InStock = 'Y' )
DECLARE @val INT;
SET @val = 15;
IF @val < 25
PRINT 'Hi Ravi Anand';
ELSE
PRINT 'By Ravi Anand.';
GO
嵌套在SQL Server中的If...Else语句-
DECLARE @val INT;
SET @val = 15;
IF @val < 25
PRINT 'Hi Ravi Anand.';
ELSE
BEGIN
IF @val < 50
PRINT 'what''s up?';
ELSE
PRINT 'Bye Ravi Anand.';
END;
GO
IF EXISTS(SELECT *
FROM Northwind.dbo.Customers
WHERE CustomerId = 'ALFKI')
PRINT 'Need to update Customer Record ALFKI'
ELSE
PRINT 'Need to add Customer Record ALFKI'
IF EXISTS(SELECT *
FROM Northwind.dbo.Customers
WHERE CustomerId = 'LARSE')
PRINT 'Need to update Customer Record LARSE'
ELSE
PRINT 'Need to add Customer Record LARSE'
SELECT CASE <variable> WHEN <value> THEN <returnvalue>
WHEN <othervalue> THEN <returnthis>
ELSE <returndefaultcase>
END AS <newcolumnname>
FROM <table>
扩展后的情况:
SELECT CASE WHEN <test> THEN <returnvalue>
WHEN <othertest> THEN <returnthis>
ELSE <returndefaultcase>
END AS <newcolumnname>
FROM <table>
30条答案
按热度按时间34gzjxbg16#
CASE
语句最接近于SQL中的if,并且所有版本的SQL Server都支持该语句。如果希望结果为布尔值,则只需使用
CAST
运算符。如果您对int
满意,则此方法有效:CASE
语句可以嵌入到其他CASE
语句中,甚至可以包含在聚合中。SQL Server Denali(SQL Server 2012)添加了IIF语句,该语句也可在access中找到(Martin Smith指出):
z31licg017#
7bsow1i618#
yv5phkfx19#
使用纯位逻辑:
请参阅工作演示:如果在SQL Server中没有
case
。对于Start,您需要计算出选定条件下的
true
和false
的值。下面是两个NULLIF:加在一起会得到1或0。接下来使用bitwise operators。
这是WYSIWYG最多的方法。
zysjyyx420#
在SQL Server 2012中添加了一项新功能IIF(我们可以简单使用):
jucafojl21#
使用CASE语句:
yc0p9oo022#
SQL Server中的简单If-Else语句:
嵌套在SQL Server中的If...Else语句-
x8diyxa723#
6yoyoihd24#
从this link,我们可以理解T-SQL中的
IF THEN ELSE
:这对T-SQL来说还不够好吗?
mhd8tkvw25#
Microsoft SQL Server(T-SQL)
在
select
中,使用:在
where
子句中,使用:w1jd8yoj26#
qgelzfjb27#
用例。就像这样。
cngwdvgl28#
您可以在*The Power of SQL CASE Statements*中找到一些很好的示例,我认为您可以使用的语句如下(来自4guysfromrolla):
wgx48brx29#
在SQL Server 2012中,您可以使用**
IIF
**function来执行此操作。这实际上只是编写
CASE
的一种简写方式(尽管不是标准的SQL)。与扩展的
CASE
版本相比,我更喜欢简洁。IIF()
和CASE
都可以解析为SQL语句中的表达式,并且只能在定义明确的位置使用。CASE表达式不能用于控制Transact-SQL语句、语句块、用户定义函数和存储过程的执行流。
如果这些限制无法满足您的需求(例如,需要根据某些条件返回不同形式的结果集),则SQL Server也有一个过程性
IF
关键字。Care must sometimes be taken to avoid parameter sniffing issues with this approach however。
2ledvvac30#
在这种情况下,案例陈述是您的朋友,它采用以下两种形式之一:
简单的情况是:
扩展后的情况:
您甚至可以将CASE语句放在ORDER BY子句中,以实现真正的高级排序。