Postgresql 9.1.9。使用与可以为null的字段连接的字符串更新字段会产生错误

时间:2014-04-28 08:52:10

标签: postgresql null string-concatenation

我不知道这是来自postgres的错误还是对我的误解。

当我做这样的更新时:

UPDATE table SET empresa = 'NOMBRE ' || city

如果city是table中的字段,empresa不能为null。

如果city为null我从Postgres收到错误,告知'empresa'不能为null,但整个连接不为null,我总是设置一个特定的字符串。

这是postgres的一个错误(版本9.1.9在debian wheezy with backports)吗?

感谢。

2 个答案:

答案 0 :(得分:2)

这不是错误,这就是SQL的工作方式。任何涉及NULL的表达式(连接)都会返回NULL

您可以使用coalesce()确保city不为空,也可以使用concat()函数来处理类似于空字符串的NULL

UPDATE table 
  SET empresa = concat('NOMBRE ', city);

答案 1 :(得分:0)

试试这个:

这里' NOMBRE' ||如果您的CITY为NULL,则city也为NULL。因为任何与NULL的联系都会导致NULL。

UPDATE table SET empresa = 'NOMBRE ' || COALESCE (city,'')