首页 > 解决方案 > SQL:用唯一值替换多个 Null

问题描述

例如,如果 column1 有一堆描述和多个 NULL,我想用唯一的描述替换每个 NULL。

使用 COALESCE 功能我可以做

COALESCE(Column1,'Description')

这将用“描述”替换列中的每个 NULL,我怎样才能单独处理每个 NULL 而不是用相同的值替换它们?

标签: sqlnullcoalesce

解决方案


您必须首先决定根据什么条件替换空值。然后您可以使用 CASE 来决定每个条件或条件的单独描述。下面我采用了行号的标准

        WITH data
         AS (SELECT NULL id
             FROM   dual
             UNION ALL
             SELECT NULL
             FROM   dual),
         d1
         AS (SELECT ROWNUM rw,
                    d.*
             FROM   data d)
    SELECT CASE
             WHEN rw = 1 THEN COALESCE(id, 'star')
             ELSE COALESCE(id, 'moon')
           END AS id
    FROM   d1; 

推荐阅读