Как удалить символы новой строки из строк данных в 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', ' '));
Гео
источник
9

update mytable set title=trim(replace(REPLACE(title,CHAR(13),''),CHAR(10),''));

Выше работает нормально.

Фанеендра Касаланати
источник
3
Это полезно, когда '\ n' не работает (проверено на
верстаке
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', '')
jay_mziray
источник