sql - 如何在 SQL SELECT 中执行 IF...THEN?

标签 sql sql-server tsql if-statement case

如何在 SQL SELECT 语句中执行 IF...THEN

例如:

SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * 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

如果您希望结果为 bool 值,则只需使用 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声明也可在 access 中找到(Martin Smith指出):

SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product

关于sql - 如何在 SQL SELECT 中执行 IF...THEN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63447/

相关文章:

c# - ExecuteScalar 是否在 SELECT 后立即返回?

sql-server - SQL# 符号是什么意思以及如何使用它?

sql-server - 重用 t-sql 表变量或克隆其结构

asp.net - ')' 附近的语法不正确。当尝试将值插入数据库时

mysql - 选择删除

php - 查找路线起点和终点周围的标记 (LatLng)

mysql - 获取数据组中的最小最大值

c# - SQL Server 故障转移期间的暂时性错误

sql-server - 是否有一个干净的 T-SQL 查询可以用来验证索引是否具有正确的列?

sql - 如何从链接服务器调用标量用户定义函数?