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

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

ID | IDParent

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

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

【问题讨论】:

标签: sql sql-server


【解决方案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;
                    

                    【讨论】:

                      猜你喜欢
                      • 2014-11-03
                      • 2014-02-15
                      • 2017-07-06
                      • 1970-01-01
                      • 2016-11-10
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多