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)

TigerTiger
sumber
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)
leher panjang
sumber
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

Łukasz Rysiak
sumber
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', ' '));
Geo
sumber
9

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

Di atas bekerja dengan baik.

Phaneendra Kasalanati
sumber
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)
Ulysnep
sumber
2
UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));
Risse
sumber
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)
Darshan Montgomery
sumber
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

Lue Inubashiri
sumber
0

Bermain dengan jawaban di atas, yang ini berhasil untuk saya

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
jay_mziray
sumber