在 SQL Select 语句中使用 If else

Posted

技术标签:

【中文标题】在 SQL Select 语句中使用 If else【英文标题】:Using If else in SQL Select statement 【发布时间】:2012-11-11 16:07:07 【问题描述】:

我有一个 select 语句,它将返回 2 列。

ID | IDParent

然后在我的程序中我必须测试if IDParent is < 1 then use ID ELSE use IDParent

有没有办法在 SQL 中使用类似 If Else 的条件来仅返回单个值?

【问题讨论】:

[堆栈溢出链接]:***.com/questions/5951157/…希望这有帮助 还有:***.com/a/63480/856172 【参考方案1】:

你可以使用CASE

SELECT   ...,
         CASE WHEN IDParent < 1 THEN ID ELSE IDPArent END AS ColumnName,
         ...
FROM     tableName

【讨论】:

【参考方案2】:

在这里,使用CASE Statement 并找到结果:

select (case when condition1 then result1
             when condition2 then result2
             else result3
             end) as columnname from tablenmae:

例如:

select (CASE WHEN IDParent< 1 then ID 
             else IDParent END) as columnname
from tablenmae

【讨论】:

【参考方案3】:
SELECT CASE WHEN IDParent < 1 
            THEN ID 
            ELSE IDParent 
       END AS colname 
FROM yourtable

【讨论】:

【参考方案4】:

查询如下

SELECT (CASE WHEN tuLieuSo is null or tuLieuSo=''
            THEN 'Chưa có đĩa' 
            ELSE 'Có đĩa' End) AS tuLieuSo,moTa
FROM [gPlan_datav3_SQHKTHN].[dbo].[gPlan_HoSo]

【讨论】:

【参考方案5】:

sql server 2012

  with
  student as 
(select sid,year from (
values (101,5),(102,5),(103,4),(104,3),(105,2),(106,1),(107,4)
) as student(sid,year)
)
select iif(year=5,sid,year) as myCol,* from student


 myCol  sid year
101 101 5
102 102 5
4   103 4
3   104 3
2   105 2
1   106 1
4   107 4

【讨论】:

【参考方案6】:

您可以在select 查询下简单地使用if 语句,就像我在下面描述的那样

if(some_condition,if_satisfied,not_satisfied)

SELECT IF(IDParent < 1,ID,IDParent)  FROM yourTable ;

【讨论】:

你的意思应该是IIF【参考方案7】:

这里是一些使用CASE WHEN的例子

SELECT 
    CASE WHEN A > 1 THEN
            'Greater than 1'
    END  
FROM TRIANGLES

.

SELECT 
    CASE WHEN A > 1 THEN
            A
    END  
FROM TRIANGLES

.

SELECT 
    CASE WHEN A > 1 and B > 1 THEN
            'Greater than 1'
    END  
FROM TRIANGLES

.

SELECT 
    CASE WHEN A > 1 THEN
            'greater than 1'
         ELSE
            'less than 1'
    END  
FROM TRIANGLES

.

SELECT 
    CASE WHEN A > 1 THEN
            'greater than 1'
         ELSE CASE WHEN A >= 0 THEN
                      'greater than or equal 0'
                   ELSE
                      'less than 0'
              END        
    END  
FROM TRIANGLES;

希望对你有帮助

【讨论】:

【参考方案8】:

您也可以使用联合构造。我不确定 CASE 是否是一个常见的 SQL 构造...

SELECT ID FROM tabName WHERE IDParent<1 OR IDParent IS NULL
UNION 
SELECT IDParent FROM tabName WHERE IDParent>1

【讨论】:

【参考方案9】:
select 
CASE WHEN IDParent is < 1 then ID else IDParent END as colname 
from yourtable

【讨论】:

【参考方案10】:

我对此结果有疑问:

SELECT Top 3
 id,
 Paytype
 FROM dbo.OrderExpresses
 WHERE CreateDate > '2018-04-08'

结果是:

22082   1
22083   2
22084   1

我想在查询中将代码更改为字符串,所以我使用此代码:

SELECT TOP 3
 id,
 CASE WHEN Paytype = 1 THEN N'Credit' ELSE N'Cash' END AS PayTypeString
 FROM dbo.OrderExpresses
 WHERE CreateDate > '2018-04-08'

结果是:)

22082   Credit
22083   Cash
22084   Credit

【讨论】:

【参考方案11】:

这里有两种方式“IF”或“CASE”。

SELECT IF(COLUMN_NAME = "VALUE", "VALUE_1", "VALUE_2") AS COLUMN_NAME 
FROM TABLE_NAME;

SELECT (CASE WHEN COLUMN_NAME = "VALUE" THEN 'VALUE_1' ELSE 'VALUE_2' END) AS COLUMN_NAME 
FROM TABLE_NAME;

【讨论】:

以上是关于在 SQL Select 语句中使用 If else的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL If语句使用select进行比较[重复]

SQL语句中“与‘

SQL Server 2008 - SELECT 子句中的 Case / If 语句 [重复]

在 mySQL SELECT 语句中使用嵌套的 IF

sql语句中if条件的使用

SQL Select 语句的用法