如何从mysql的数据行中删除换行符?

101

我可以在PHP脚本中循环遍历所有行并执行

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

而且 trim 可以删除 \n

但我想知道是否可以在一个查询中完成相同的操作?

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

这样行得通吗?那我就无需循环遍历,直接执行此查询即可!

谢谢

(PS:我可以测试一下,但表格相当大,不想弄乱数据,所以只是想知道您以前是否测试过类似的内容)


你可以直接去掉where子句...但要小心使用trim,因为你可能有其他字符在集合中(例如回车符'\r')。 - jkelley
在你提问之前,你应该已经测试过了。它是有效的。如果你想在大表上测试,可以使用LIMIT子句。 - Lukasz Lysik
WHERE子句出了什么问题?只是好奇。 - Phill Pafford
@PhillPafford,从技术上讲,它只是多余的。(我知道这已经超过5年了,但可能会帮助其他人来阅读。) - Bing
9个回答

148

8
这个操作并不会去除尾随的 \n,它会去除所有的 \n,但在这里并不希望去除所有的 \n。 - longneck
21
可能这并没有对原帖作者有帮助,但对我处理的一个情况有所帮助,点赞。 - Mike Purcell
对我有用,谢谢。 - Exoon
正是我需要的。 - user3453428

134

您的语法有误:

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

补充:

如果换行符位于字段的开头:

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

8
来自 MSSQL,这个语法对我来说非常陌生。我还以为你在使用伪代码呢!但它确实有效 :) - Jeff
参考文档:TRIM() 的说明。 - Mark G

19

1) 将所有换行制表符字符替换为空格。

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

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

11

更新 mytable 数据表,将 title 字段中的换行符(包括 CR 和 LF)去除并更新。

以上代码可以正常运行。


3
当 '\n' 无效时(在 MySQL Workbench 上进行了测试),使用这个方法很有帮助。 - Mohamed23gharbi

8

从Excel导入数据时,去除行末回车符。执行此操作时,可能会收到“没有WHERE”错误的提示;请忽略该提示并执行。

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

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

4
这个操作不会去掉行尾的 \n,而是会去掉所有的 \n,这不是我们想要的结果。 - longneck

3

参考以上答案,这个方法对我有效

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

0

我的两分钱。

为了摆脱我的\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 函数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接