Làm cách nào để xóa các ký tự dòng mới khỏi các hàng dữ liệu trong mysql?


87

Tôi có thể lặp lại tất cả các hàng trong tập lệnh php và làm

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

và cắt có thể loại bỏ \ n

Nhưng tôi chỉ tự hỏi liệu điều gì đó tương tự có thể được thực hiện trong một truy vấn?

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

nó sẽ hoạt động? Sau đó, tôi có thể thực hiện truy vấn này mà không yêu cầu lặp lại!

cảm ơn

(Tái bút: Tôi có thể kiểm tra nó nhưng bảng khá lớn và không muốn gây rối với dữ liệu, vì vậy hãy nghĩ nếu bạn đã thử nghiệm cái gì đó như thế này trước đây)


Bạn chỉ có thể thoát khỏi mệnh đề where ... hãy cẩn thận w / cắt của bạn mặc dù bởi vì bạn có thể có các nhân vật khác trong tập (như vận chuyển trở lại '\ r')
jkelley

Bạn nên kiểm tra điều đó trước khi đặt câu hỏi này. Nó hoạt động. Nếu bạn muốn kiểm tra điều đó trên bảng lớn, bạn có thể sử dụng mệnh đề LIMIT.
Lukasz Lysik

Điều gì sai với mệnh đề WHERE? Chỉ cần tò mò
Phill Pafford

@PhillPafford Không có gì, về mặt kỹ thuật, nó chỉ là thừa. (Tôi biết cái này> 5 tuổi, nhưng có thể giúp những người khác đọc nó.)
Bing

Câu trả lời:


121

cú pháp của bạn sai:

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

Thêm vào:

Nếu ký tự dòng mới ở đầu trường:

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

6
đến từ MSSQL, cú pháp này rất xa lạ với tôi. Tôi nghĩ rằng bạn đang sử dụng mã giả! nhưng nó đã hoạt động :)
Jeff

Tài liệu về TRIM () để tham khảo.
Đánh dấu

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

đã làm cho tôi.

trong khi tương tự, nó cũng sẽ thoát khỏi \ r \ n

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


8
điều này không xóa dấu vết \ n, nó xóa tất cả \ n, không được mong muốn ở đây.
longneck

20
Điều này có thể không làm việc cho OP chính xác, nhưng đã giúp đỡ trong một sitch tôi đã đối phó với, 1
Mike Purcell

Làm việc cho tôi, Cảm ơn bạn.
Exoon

chính xác những gì tôi cần.
user3453428,

14

1) Thay thế tất cả các ký tự dòngtab mới bằng dấu cách.

2) Loại bỏ tất cả các khoảng trắng đầu và cuối .

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

Trên đây là hoạt động tốt.


3
Cái này rất hữu ích khi '\ n' không hoạt động (thử nghiệm trên mysql workbench)
Mohamed23gharbi

6

Loại bỏ lợi nhuận theo sau khi nhập từ Excel. Khi bạn thực hiện điều này, bạn có thể nhận được lỗi rằng không có WHERE; bỏ qua và thực thi.

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

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

4
điều này không xóa dấu vết \ n, nó xóa tất cả \ n, không được mong muốn ở đây.
longneck

0

2 xu của tôi.

Để loại bỏ \ n của tôi, tôi cần làm một \\ n. Hy vọng rằng sẽ giúp một ai đó.

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

0

Đối với các ký tự dòng mới

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

Đối với tất cả các ký tự khoảng trắng

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

Đọc thêm: Hàm TRIM của MySQL


0

Chơi với các câu trả lời ở trên, câu trả lời này phù hợp với tôi

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.