【问题标题】:CONCAT return null [duplicate]CONCAT返回null [重复]
【发布时间】:2019-05-16 17:55:32
【问题描述】:

我试图将三列作为字符串,但由于某种原因,我只得到 NULL。

这是代码:

SELECT CONCAT(name, ' ', city, ' ', country) FROM places   

表places包含name、city和country三列,不为空,但部分列可以包含NULL。

结果:

NULL
NULL
NULL,
etc

我尝试了这篇帖子 MySQL CONCAT returns NULL if any field contain NULL 的答案,但它对我不起作用。

【问题讨论】:

  • SELECT name, city, country, CONCAT(name, ' ', city, ' ', country) FROM places 的结果是什么?
  • 它显示了所有的列和concant仍然为空的列
  • 我不同意重复的问题,这篇文章中的答案对我不起作用

标签: mysql null string-function


【解决方案1】:

你可以试试CONCAT_WS()

SELECT CONCAT_WS(' ', name, city, country) FROM places 

【讨论】:

  • 不知道这个。好答案!
  • 这是回复
  • 不仅仅是 MySQL 8.0。这个函数在 MySQL 中已经存在多年了。如果只有人们会阅读文档...例如,这是有关此功能的 MySQL 5.5 文档的链接:dev.mysql.com/doc/refman/5.5/en/…
  • 这绝对是我第一次看到这样的功能
  • @BillKarwin 感谢您的指出,我已经回滚了我的编辑
【解决方案2】:

您可能想使用COALESCE(name, '') 之类的东西将空字符串转换为空字符串。由于 null 表示未知,mysql 不会假定它表示空字符串。与任何东西连接的未知仍然是未知的。您必须明确告诉它将其视为空字符串,这就是合并的目的。

【讨论】:

  • 它显示了一个奇怪的结果,只有部分列,而不是它应该显示的所有信息。
猜你喜欢
  • 2019-10-04
  • 2011-11-01
  • 2017-05-09
  • 2012-02-01
  • 2015-09-11
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多