Как удалить символы новой строки из строк данных в 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.