未在CASE表达式PostgreSQL中执行ELSE值

时间:2019-04-01 04:18:23

标签: postgresql

我正在使用CASE表达式显示“ NamaAyah”或“ NamaIbu”或“ NamaWali”,如果它们全部为空,则默认值将显示“ ORTU-'NomorPokok'”。 但是未显示默认值,它仅在我的表中显示符号“-”。我认为ELSE语句中的值未执行。

Postgre版本:PostgreSQL 9.4.15

这是我的代码

SELECT
"MahasiswaID" AS "PERSONID","NomorPokok" AS "KODE",
UPPER(CASE 
                    WHEN "NamaAyah" <> '' THEN "NamaAyah" 
                    WHEN "NamaIbu" <> '' THEN "NamaIbu"
                    WHEN "NamaWali" <> '' THEN "NamaWali"
                    ELSE 'ORTU'||'-'||"NomorPokok"
                    END) AS "NAMALENGKAP"
FROM "MasterMahasiswa" ORDER BY "KODE"

这就是结果 enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

您拥有的表达式可以更简单:

ELSE 'ORTU-'||"NomorPokok"

除此之外,对您显示的内容的唯一合理解释是,您的一个或多个列-"NamaAyah""NamaIbu"中包含文字"NamaWali"。你检查了吗?