MySQL ISNULL函数的PostgreSQL等效写法求助
问题解决:PostgreSQL中ISNULL函数报错
错误的核心原因是:PostgreSQL不支持MySQL那种接受两个参数的ISNULL()函数。PG里的ISNULL()只有单参数版本,仅用于判断某个值是否为NULL(返回布尔值),不能用来做NULL值替换。
要实现你想要的「如果a.propertyaddress为NULL,就用b.propertyaddress替代」的逻辑,PostgreSQL里用标准SQL函数COALESCE()即可,它的作用就是返回参数列表里第一个非NULL的值,和MySQL的双参数ISNULL()功能完全一致。
修改后的完整SQL代码:
Select a.parcelid, a.propertyaddress, b.parcelid, b.propertyaddress, COALESCE(a.propertyaddress, b.propertyaddress) From public.nashhousing a JOIN public.nashhousing b on a.parcelid = b.parcelid AND a.uniqueid <> b.uniqueid Where a.propertyaddress is null
额外补充:如果你想用PG原生的方式实现类似逻辑,也可以用CASE表达式,写法如下:
CASE WHEN a.propertyaddress IS NOT NULL THEN a.propertyaddress ELSE b.propertyaddress END
不过COALESCE()更简洁,推荐使用。
内容的提问来源于stack exchange,提问作者Alexia Brown
相关产品推荐
相关产品推荐

