如何从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子句。
卢卡斯(Lukasz Lysik),2009年

WHERE子句怎么了?只是好奇
Phill Pafford

@PhillPafford从技术上讲没什么,只是多余的。(我知道这已经超过5岁了,但可能会帮助其他人阅读它。)
Bing

Answers:


120

您的语法错误:

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

6
来自MSSQL,这种语法对我来说很陌生。我以为你在用伪代码!但它有效:)
Jeff

有关TRIM()的文档供参考。
Mark G


14

1)用空格替换所有新行制表符。

2)删除所有前导和尾随空格。

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


6

从Excel导入时删除尾随返回。当您执行此操作时,您可能会收到一条错误消息,指出没有WHERE;忽略并执行。

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 2013年

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', '')
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.