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