mysql concat with trim

时间:2009-07-07 20:18:53

标签: mysql concatenation

我有一个表格,其中包含标记为地址的单元格中的一堆地址市。 我试图将完整的地址合并为常见的“地址,城市”格式。

偶尔,在我的数据库中,我将其中一个位置单元格为空。因此,我在我的concat系列中做了一个IFNULL,但我最终得到一个前导或尾随','。 我已经尝试了'trim'功能以及我的concat,但有时仍会落后','。

这就是我编写查询的方式

SELECT TRIM(BOTH ',' FROM CONCAT(IFNULL(address,''), ', ', IFNULL(city,''))) FROM locals

我知道为什么会有这种行为?有没有更好的方法来构建我的concat语句?

3 个答案:

答案 0 :(得分:6)

我认为您的查询只是在BOTH语句中的逗号后面缺少一个空格。这似乎对我有用

SELECT TRIM(BOTH ', ' FROM CONCAT(IFNULL(address,''), ', ', IFNULL(city,''))) FROM locals;

答案 1 :(得分:1)

这很长,但似乎有效。

SELECT TRIM(CONCAT(IFNULL(address,''), IF(address IS NOT NULL AND city IS NOT NULL, ', ',''), IFNULL(city,''))) FROM locals

所以这个数据:

address          city
----------------------------
High Street   Southampton
NULL          London
Station Road    NULL
London Road   Brighton

你明白了:

High Street, Southampton
London
Station Road
London Road, Brighton

答案 2 :(得分:-1)

剥离像“a,b ,,,, c,d,e ,,,,, eed,sffre”之类的连续分隔符似乎难以理解GROUP_CONCAT的任何优雅解决方案

使用的方法是为每个条件创建视图,以避免连续的分隔符,然后是单个视图的联合或连接。