Как удалить символы новой строки из строк данных в mysql?


87

Я могу перебрать все строки в скрипте php и сделать

UPDATE mytable SET title = "'.trim($row['title']).'" where id = "'.$row['id'].'";

и обрезка может удалить \ n

Но мне просто интересно, можно ли сделать что-то то же самое в одном запросе?

 update mytable SET title = TRIM(title, '\n') where 1=1

это будет работать? Затем я могу просто выполнить этот запрос, не выполняя цикл!

Благодарность

(PS: я мог бы проверить это, но таблица довольно большая и не хочу связываться с данными, поэтому просто подумайте, тестировали ли вы что-то подобное раньше)


Вы можете просто избавиться от предложения where ... будьте осторожны с вашей обрезкой, потому что у вас могут быть другие символы в наборе (например, возврат каретки '\ r')
jkelley 01

Вам следовало проверить это, прежде чем задать этот вопрос. Оно работает. Если вы хотите проверить это на большой таблице, вы можете использовать предложение LIMIT.
Лукаш Лысик

Что не так с предложением WHERE? Просто любопытно
Фил Паффорд 01

@PhillPafford Ничего, технически это просто лишнее. (Я знаю, что этому> 5 лет, но может помочь другим людям, которые придут его прочитать.)
Бинг,

Ответы:


121

ваш синтаксис неверен:

update mytable SET title = TRIM(TRAILING '\n' FROM title)

Дополнение:

Если символ новой строки находится в начале поля:

update mytable SET title = TRIM(LEADING '\n' FROM title)

6
Исходя из MSSQL, этот синтаксис был мне очень чужд. я думал, вы используете псевдокод! но это сработало :)
Джефф

Документация по TRIM () для справки.
Mark G

121
UPDATE test SET log = REPLACE(REPLACE(log, '\r', ''), '\n', '');

работал у меня.

пока он похож, он также избавится от \ r \ n

http://lists.mysql.com/mysql/182689


8
это не удаляет завершающий \ n, он удаляет все \ n, что здесь нежелательно.
longneck

20
Возможно, это не сработало для конкретного OP, но помогло в ситуации, с которой я имел дело, +1
Майк Перселл

Работал у меня, спасибо.
Exoon

именно то, что мне нужно.
user3453428

14

1) Замените все символы новой строки и табуляции пробелами.

2) Удалите все начальные и конечные пробелы.

 UPDATE mytable SET `title` = TRIM(REPLACE(REPLACE(REPLACE(`title`, '\n', ' '), '\r', ' '), '\t', ' '));


6

Удаляет завершающие возвраты при импорте из Excel. Когда вы выполните это, вы можете получить ошибку, что нет WHERE; игнорировать и выполнять.

UPDATE table_name SET col_name = TRIM(TRAILING '\r' FROM col_name)

2
UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));

4
это не удаляет завершающий \ n, он удаляет все \ n, что здесь нежелательно.
longneck

0

Мои 2 цента.

Чтобы избавиться от моих \ n, мне нужно было сделать \\ n. Надеюсь, это кому-то поможет.

update mytable SET title = TRIM(TRAILING '\\n' FROM title)

0

Для символов новой строки

UPDATE table_name SET field_name = TRIM(TRAILING '\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r\n' FROM field_name);

Для всех символов пробела

UPDATE table_name SET field_name = TRIM(field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\t' FROM field_name);

Подробнее: Функция MySQL TRIM


0

Играя с приведенными выше ответами, этот работает для меня

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.