【问题标题】:SQLITE: Select another column if the first one is nullSQLITE:如果第一列为空,则选择另一列
【发布时间】:2023-03-03 11:07:01
【问题描述】:

如果第一列中没有记录(为空),我想从另一列中选择值。 我想要这样的东西:

SELECT (if Column1 IS NULL THEN Column2), Column3, Column4 FROM MyTable

如何在 SQLite 中做到这一点?

【问题讨论】:

    标签: sqlite select null


    【解决方案1】:

    使用COALESCE function,它返回第一个非空参数:

    SELECT COALESCE(Column1, Column2), Column3, Column4
    FROM MyTable
    

    在这种情况下,您会得到Column1,但如果它为NULL,则会返回Column2

    【讨论】:

    • @Stephan FWIW,文档说两者是等价的,所以我想这只是语义选择的问题
    • 是的,但有一些区别:1.coalesce 接受超过 2 个参数 2. 在 ifnull 中,您需要知道哪一列可能为 null,但在 coalesce 中您不在乎,因为它获得了第一个非-null 值 :)
    【解决方案2】:

    来自Safari Books

    姓名

    coalesce() — Return first non-NULL argument
    

    常见用法

    coalesce( param1, param2, ... )
    

    说明

    coalesce() 函数接受两个或多个参数并返回第一个非 NULL 参数。如果所有参数值为 NULL,则返回 NULL。

    另见

    ifnull(), nullif()
    

    【讨论】:

      【解决方案3】:

      你可以使用IFNULL函数,试试这个

      SELECT IFNULL(Column1, Column2), Column3, Column4 FROM MyTable
      

      【讨论】:

        【解决方案4】:

        使用COALESCE(column1,column2)

        SELECT COALESCE(Column1, Column2), Column3, Column4 FROM MyTable
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-01
          • 1970-01-01
          • 2010-12-17
          • 1970-01-01
          相关资源
          最近更新 更多