Як видалити символи нових рядків із рядків даних у 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

Вам слід було це перевірити, перш ніж задавати це питання. Це працює. Якщо ви хочете перевірити це на великій таблиці, ви можете скористатися пропозицією LIMIT.
Лукаш Лисик

Що не так із реченням WHERE? Просто цікаво
Філл Паффорд

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

Відповіді:


120

ваш синтаксис неправильний:

update mytable SET title = TRIM(TRAILING '\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
Можливо, це не спрацювало для точного ОП, але допомогло у справі, з якою я мав справу, +1
Майк Перселл

Працював у мене, дякую.
Exoon,

саме те, що мені потрібно.
user3453428

14

1) Замініть усі символи нового рядка та табуляції пробілами.

2) Видалити всі провідні та кінцеві пробіли.

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


6

Видаляє завершені повернення під час імпорту з Excel. Коли ви виконаєте це, ви можете отримати повідомлення про помилку, де немає ДЕ; ігнорувати та виконувати.

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.