SQLITE:如果第一列为空,则选择另一列

5
如果第一列没有记录(为null),我希望从另一列中选择值。我希望实现类似于以下内容的功能:
SELECT (if Column1 IS NULL THEN Column2), Column3, Column4 FROM MyTable

如何在SQLite中实现这个功能?
4个回答

11
使用COALESCE函数,它返回第一个非空参数。
SELECT COALESCE(Column1, Column2), Column3, Column4
FROM MyTable

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

@Stephan 说实话,文档中都说这两种写法是等价的,所以我想这只是语义选择的问题。 - lc.
1
是的,但有一些区别:
  1. coalesce接受超过2个参数
  2. 在ifnull中,您需要知道哪个列可能为空,但在coalesce中,您不需要关心,因为它获取第一个非空值 :)
- Stephan

3

From Safari Books

Name

coalesce() — Return first non-NULL argument

常见用法

coalesce( param1, param2, ... )

描述

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

参见

ifnull(), nullif()

2
您可以使用IFNULL函数,尝试如下操作。
SELECT IFNULL(Column1, Column2), Column3, Column4 FROM MyTable

1
使用 COALESCE(column1,column2)
SELECT COALESCE(Column1, Column2), Column3, Column4 FROM MyTable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接