首页 > 解决方案 > 在 SQL 中连接两个列值

问题描述

我有两列:

colA    colB
a1      b1
NULL    b2
a3      NULL

对于以下情况,我想在 SELECT 查询中连接两列:

如果值colA is NULLcolB is NULL返回NULL
如果值colA is NULLcolB is NOT NULL返回:b1
如果值colA is NOT NULLcolB is NULL返回a1
如果both values are NOT NULL返回a1:b1

如何为案例选择合适的值?

标签: sqlsql-serverstring

解决方案


SELECT NULLIF(COALESCE(colA,'')+COALESCE(':'+colB,''), '') FROM myTable

一些解释:

COALESCE返回其参数列表中的第一个非空参数。因此,第一个COALESCE将 nullcolA转换为空字符串。

第二个COALESCE第一个在前面加上一个冒号colB-- 但如果colB为空,则尝试附加一个字符串将返回 NULL!因此,如果为空,则结果再次为空字符串,如果colB不是,则为冒号加colB号。

我们附加两个COALESCE输出。我们现在拥有了 OP 想要的一切,除了如果两者都为空,我们有空字符串。 NULLIF负责这一点——如果它的参数相等,则返回 NULL,否则返回第一个参数。


推荐阅读