在SELECT CASE中连接

时间:2017-06-23 01:29:17

标签: sql postgresql select case

我正在移动一个具有名字,姓氏和公司名称的客户数据库。目前的数据要么是First&姓氏或公司名称

在新数据库中,我有一个"打印名称"我需要将名字和姓氏组合成一个字段,或者如果有公司名称,我需要使用这个值。

我已经尝试过低于CASE WHEN表达无效。

SELECT 
fstnam,
lstnam,
cmpnam,
CASE
    WHEN csttbl.cmpnam = null THEN fstnam||' '||lstnam
    ELSE csttbl.cmpnam
    END as PrintName

FROM csttbl;

通过上述查询,我​​在打印名称列中只返回公司名称,而不是组合的First&姓。返回的数据可以在这里看到https://drive.google.com/open?id=0B31ZRmFSX6rMYmNOczlRNE1lM2c

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

更改

csttbl.cmpnam = null

csttbl.cmpnam is null

RDBMS无法将null与任何值进行比较,因此使用带有null的=是没有用的。要比较空值,您应该使用is null,它几​​乎适用于所有RDBMS。

答案 1 :(得分:0)

我会使用coalesce()

SELECT fstnam, lstnam, cmpnam,
       COALESCE(csttbl.cmpnam, fstnam|| ' ' || lstnam) as PrintName
FROM csttbl;