如何在SQL SELECT中执行IF ... THEN?
时间:2020-03-05 18:53:36 来源:igfitidea点击:
如何在" SQL SELECT"语句中执行" IF ... THEN"?
例如:
SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product
解决方案
回答
SELECT (CASE WHEN (Obsolete = 'N' OR InStock = 'Y') THEN 'YES' ELSE 'NO' END) as Salable , * FROM Product
回答
使用案例。这样的事情。
SELECT Salable = CASE Obsolete WHEN 'N' THEN 1 ELSE 0 END
回答
SELECT CASE WHEN OBSOLETE = 'N' or InStock = 'Y' THEN 'TRUE' ELSE 'FALSE' END AS Salable, * FROM PRODUCT
回答
CASE语句与SQL中的IF最接近,并且在所有版本的SQL Server中都受支持。
SELECT CAST( CASE WHEN Obsolete = 'N' or InStock = 'Y' THEN 1 ELSE 0 END AS bit) as Saleable, * FROM Product
如果我们希望将结果作为布尔值,则只需要执行CAST
,如果我们对int
满意,则可以这样做:
SELECT CASE WHEN Obsolete = 'N' or InStock = 'Y' THEN 1 ELSE 0 END as Saleable, * FROM Product
CASE语句可以嵌入其他CASE语句中,甚至可以包含在聚合中。
SQL Server Denali(SQL Server 2012)添加了IIF语句,该语句也可以在访问中使用:(由Martin Smith指出)
SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product
回答
我们可以在《 SQL CASE语句的强大功能》中找到一些不错的示例,我认为我们可以使用的语句将类似于以下内容(来自4guysfromrolla):
SELECT FirstName, LastName, Salary, DOB, CASE Gender WHEN 'M' THEN 'Male' WHEN 'F' THEN 'Female' END FROM Employees
回答
Microsoft SQL Server(T-SQL)
在选定的用途中:
select case when Obsolete = 'N' or InStock = 'Y' then 'YES' else 'NO' end
在where子句中,使用:
where 1 = case when Obsolete = 'N' or InStock = 'Y' then 1 else 0 end
回答
使用CASE语句:
SELECT CASE WHEN (Obsolete = 'N' OR InStock = 'Y') THEN 'Y' ELSE 'N' END as Available etc...
回答
在这种情况下,案例陈述是朋友,采用两种形式之一:
简单的情况:
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>
我们甚至可以将case语句放在order by子句中,以进行真正的排序。
回答
从这个链接,我们可以在T-SQL
中理解IF THEN ELSE
:
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'
对于T-SQL来说这还不够吗?