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

如何删除MySQL中以逗号分隔的记录字符串?,mysql,select,split,trim,Mysql,Select,Split,Trim,如何删除逗号分隔的字符串“0000-00-00” 期待回答 ID Name Return Date 1 A 2016-02-1,2016-1-15 2 B 2016-04-1 3 c 2016-04-4 假设您有3个案例:0000-00-00左、右和中间的字符串: +------+------+--------------------------------+ | ID | Name | Ret

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

期待回答

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

假设您有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           |
+------+------+--------------------------------+
使用该功能:

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'

您也可以尝试使用此项替换其他位置的值,如下所示:

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`)

它们是弦。您使用标准的字符串操作/函数:如果您的数据库已经正确地规范化,您就不需要问这个问题。这将是一个简单的
删除。其中date='0000-00-00'
query.
子字符串('Return date`FROM 11)这里真正的解决方案是不在一列中存储多个值!
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`)