假设我有表a(带有a1列)和b(带有b1和b2列),并且我执行了左外部联接
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
然后,b1和b2将为NULL,其中a1的值不匹配b1的值。
我可以为b2提供默认值,而不是NULL吗?需要注意的是COALESCE不会在这里工作,因为我不希望默认值来覆盖潜在的NULL在B2那里是 B1匹配A1的值。
也就是说,a和b为
CREATE TABLE a (a1)
  AS VALUES (1),
            (2),
            (3) ;
CREATE TABLE b (b1,b2)
  AS VALUES (1, 10),
            (3, null) ;
a1     b1 | b2
---    --------
 1      1 | 10
 2      3 | NULL
 3
我想得到b2的默认值100
a1 | b1   | b2
---------------
1  |  1   | 10
2  | NULL | 100
3  |  3   | NULL
在这种简单的情况下,我可以通过查看输出中b1是否为NULL来“手工”完成。这是总体上最好的选择,还是有更标准,更整洁的方式?
sql(这表示“ SQL查询语言”。该标记不表示任何特定的DBMS产品或方言)。该部分:[b2]=CASE WHEN ... END是无效的(标准)SQL表达式。