Bagaimana cara menghapus karakter baris baru dari baris data di mysql?


87

Saya dapat mengulang melalui semua baris dalam skrip php dan lakukan

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

dan trim dapat menghapus \ n

Tetapi saya hanya ingin tahu apakah hal yang sama dapat dilakukan dalam satu kueri?

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

apakah itu akan berhasil? Saya kemudian dapat menjalankan kueri ini tanpa perlu mengulang!

Terima kasih

(PS: Saya bisa mengujinya tetapi tabelnya cukup besar dan tidak ingin mengacaukan data, jadi pikirkan saja jika Anda telah menguji sesuatu seperti ini sebelumnya)


Anda bisa saja menghilangkan klausa where ... hati-hati dengan trim Anda karena Anda mungkin memiliki karakter lain di set (seperti carriage return '\ r')
jkelley

Anda harus mengujinya sebelum mengajukan pertanyaan ini. Berhasil. Jika Anda ingin mengujinya di meja besar Anda dapat menggunakan klausa LIMIT.
Lukasz Lysik

Ada apa dengan klausa WHERE? Hanya penasaran
Phill Pafford

@PhillPafford Tidak ada, secara teknis, itu hanya mubazir. (Saya tahu ini berusia> 5 tahun, tetapi mungkin membantu orang lain datang untuk membacanya.)
Bing

Jawaban:


121

sintaks Anda salah:

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

Tambahan:

Jika karakter baris baru ada di awal bidang:

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

6
berasal dari MSSQL, sintaks ini sangat asing bagi saya. saya pikir Anda menggunakan pseudocode! tetapi berhasil :)
Jeff

Dokumentasi tentang TRIM () untuk referensi.
Mark G

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

bekerja untuk saya.

sementara itu serupa, itu juga akan menyingkirkan \ r \ n

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


8
ini tidak menghapus jejak \ n, ini menghapus semua \ n, yang tidak diinginkan di sini.
longneck

20
Ini mungkin tidak bekerja untuk OP yang tepat, tetapi membantu dalam masalah yang saya hadapi, +1
Mike Purcell

Bekerja untuk saya, Terima kasih.
Keluaran

persis apa yang saya butuhkan.
pengguna3453428

14

1) Ganti semua karakter baris dan tab baru dengan spasi.

2) Hapus semua spasi di depan dan di belakang .

 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),''));

Di atas bekerja dengan baik.


3
Yang ini berguna ketika '\ n' tidak berfungsi (diuji di meja kerja mysql)
Mohamed23gharbi

6

Menghapus trailing return saat mengimpor dari Excel. Saat Anda menjalankan ini, Anda mungkin menerima pesan kesalahan bahwa tidak ada WHERE; abaikan dan jalankan.

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

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

4
ini tidak menghapus jejak \ n, ini menghapus semua \ n, yang tidak diinginkan di sini.
longneck

0

2 sen saya.

Untuk menyingkirkan \ n saya, saya perlu melakukan \\ n. Harapan yang membantu seseorang.

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

0

Untuk karakter baris baru

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);

Untuk semua karakter spasi putih

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);

Baca lebih lanjut: Fungsi MySQL TRIM


0

Bermain dengan jawaban di atas, yang ini berhasil untuk saya

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.