2016-07-27 2 views
0

Как удалить запятую строку "0000-00-00"Как удалить запятую строку записей в MySQL?

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 
+0

это струны. вы используете стандартные операции/функции строки: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html И если ваша БД была правильно нормализована, вам не нужно будет задавать этот вопрос. это будет простой запрос 'delete ... where date = '0000-00-00''. –

+0

'SUBSTRING (\' Return Date \ 'FROM 11);' –

+2

Настоящим решением является НЕ хранить несколько значений в одном столбце! –

ответ

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' в середине или вправо.

Смежные вопросы