在SQL中与NULL值连接

Luc*_*vin 17 sql database string null concatenation

Column1      Column2
-------      -------
 apple        juice
 water        melon
 banana
 red          berry       
Run Code Online (Sandbox Code Playgroud)

我有一个有两列的表.Column1有一组单词,Column2也有一组单词.我想用+运算符连接它们而没有空格.

例如:applejuice

问题是,如果第二列中有空值,我只想将第一个元素作为结果.

例如:香蕉

Result
------
applejuice
watermelon
banana
redberry
Run Code Online (Sandbox Code Playgroud)

但是,当我使用column1 + column2时,如果Comunm2为NULL,则它给出NULL值.我希望结果是"香蕉".

Joe*_*lli 38

使用COALESCE函数将NULL值替换为空字符串.

SELECT Column1 + COALESCE(Column2, '') AS Result
    FROM YourTable
Run Code Online (Sandbox Code Playgroud)


小智 6

我发布的一些带有 MSSQL 标签的帖子已被版主重命名为“SQL”。所以我假设你正在使用 MSSQL

COALESCE 将返回第一个非空值。

SELECT COALESCE('a', NULL, 'c')
Run Code Online (Sandbox Code Playgroud)

只会返回 'a'

如果您需要名字 + 姓氏(有时其中一个或另一个为 NULL),请使用 CONCAT。Concat 将字符串相加,并用 0 长度的非空值替换 NULL。

 SELECT CONCAT('a', NULL, 'c')
Run Code Online (Sandbox Code Playgroud)

将返回“ac”

如果你想要 Fn 空间 + 中间名称空间 + LN,请将 concatenate 与 CONCAT 结合起来:

SELECT CONCAT('a' + ' ', NULL + ' ', 'c')
Run Code Online (Sandbox Code Playgroud)

将返回“a c”。

中间名 (null) 后面的空格用 + 和 NULL 消除。

NULL + ' ' 为空。

因此,在 Middlename 或 Firstname 为空的情况下,您不会得到额外不需要的空格。

  • @客户关系你实际上不正确,因为 SELECT CONCAT('a' + ' ', NULL + ' ', 'c') 将返回 Null 而不是 'ac' (2认同)