我有一个表格,其中包含标记为地址的单元格中的一堆地址市。 我试图将完整的地址合并为常见的“地址,城市”格式。
偶尔,在我的数据库中,我将其中一个位置单元格为空。因此,我在我的concat系列中做了一个IFNULL,但我最终得到一个前导或尾随','。 我已经尝试了'trim'功能以及我的concat,但有时仍会落后','。
这就是我编写查询的方式
SELECT TRIM(BOTH ',' FROM CONCAT(IFNULL(address,''), ', ', IFNULL(city,''))) FROM locals
我知道为什么会有这种行为?有没有更好的方法来构建我的concat语句?
答案 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的任何优雅解决方案
使用的方法是为每个条件创建视图,以避免连续的分隔符,然后是单个视图的联合或连接。