如何在MySQL中删除逗号分隔的记录字符串?

时间:2016-07-27 17:11:40

标签: mysql select split trim

如何删除逗号分隔的字符串" 0000-00-00"

  ID      Name   Return Date
   1       A     0000-00-00,2016-02-1,2016-1-15
   2       B     0000-00-00,2016-04-1
   3       c     0000-00-00,2016-04-4

期待答案

  ID      Name   Return Date
   1       A     2016-02-1,2016-1-15
   2       B     2016-04-1
   3       c     2016-04-4

2 个答案:

答案 0 :(得分:1)

认为你有3个案例:0000-00-00字符串在左,右和中间:

+------+------+--------------------------------+
| ID   | Name | Return Date                    |
+------+------+--------------------------------+
|    1 | A    | 0000-00-00,2016-02-1,2016-1-15 |
|    2 | B    | 0000-00-00,2016-04-1           |
|    3 | C    | 0000-00-00,2016-04-4           |
+------+------+--------------------------------+

使用REPLACE功能:

SELECT `Return Date`, REPLACE(`Return Date`,'0000-00-00,','') as replaced
FROM YourTable;

+--------------------------------+----------------------+
| Return Date                    | replaced             |
+--------------------------------+----------------------+
| 0000-00-00,2016-02-1,2016-1-15 | 2016-02-1,2016-1-15  |
| 0000-00-00,2016-04-1           | 2016-04-1            |
| 0000-00-00,2016-04-4           | 2016-04-4            |
+--------------------------------+----------------------+

您的更新语句为:

UPDATE YourTable
SET `Return Date` = REPLACE(`Return Date`,'0000-00-00,','') 
WHERE `Return Date` like '%0000-00-00,%';

您必须对中间或右侧的'0000-00-00'等其他案例进行类似的查询。

答案 1 :(得分:1)

你也可以尝试用这个替换任何其他位置的值:

Values may be:
+------------------------------+
0000-00-00,2016-02-1,2016-1-15 
2016-02-1,0000-00-00,2016-1-15 
2016-02-1,2016-1-15,0000-00-00
0000-00-00
+------------------------------+

UPDATE YourTable
SET `Return Date` = TRIM(BOTH ',' FROM
      REPLACE(
        REPLACE(CONCAT(',',REPLACE(`Return Date`, ',', ',,'), ','),',0000-00-00,', ''), ',,', ',')
    )
WHERE FIND_IN_SET('0000-00-00', `Return Date`)