MySQL清除整个列中的所有空格

131

有没有一种方法可以从所有值的特定列中删除所有空格?


1
你什么时候需要通过更新或选择来删除空格?不清楚! - 151291
7个回答

272
替换所有空格:
UPDATE `table` SET `col_name` = REPLACE(`col_name`, ' ', '')

要删除所有的 制表符 字符:
UPDATE `table` SET `col_name` = REPLACE(`col_name`, '\t', '' )

要删除所有的换行字符:

UPDATE `table` SET `col_name` = REPLACE(`col_name`, '\n', '')

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

如果需要删除列的首尾空格,可以使用以下方法:

UPDATE `table` SET `col_name` = TRIM(`col_name`)

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim

如果您想删除所有类型的空格,可以将所有这些函数组合使用:

UPDATE `table` SET `col_name` = REPLACE(REPLACE(REPLACE(`col_name`, ' ', ''), '\t', ''), '\n', '');

6
TRIM 只会从字符串开头和结尾处移除空格。 - Michael Mior
可以的 :) 虽然它只删除空格而不是制表符或换行符。不清楚 OP 究竟想要什么。 - Michael Mior
4
如果您想要移除制表符,请按照以下步骤操作: UPDATE table SET col_name = REPLACE( col_name , '\t' , '' ) - Chella
1
要删除换行符:UPDATE table SET col_name = REPLACE(col_name, '\r', ''); - Chris Sim
2
双倍或三倍空间怎么样? - reignsly
显示剩余3条评论

17

由于问题是如何替换所有的空格

UPDATE `table` 
SET `col_name` = REPLACE
(REPLACE(REPLACE(`col_name`, ' ', ''), '\t', ''), '\n', '');

2
这对我很有效。它完全删除了所有类型的空格。 - Blues Clues

12

工作查询:

SELECT replace(col_name , ' ','') FROM table_name;

虽然这不会:

SELECT trim(col_name) FROM table_name;


在WHERE子句中使用“replace”可以很好地搜索和防止类似数据保存到数据库中。谢谢。 - Saghachi

4
使用以下查询,您可以在MySQL中删除前导和尾随的空格。
UPDATE `table_name`
SET `col_name` = TRIM(`col_name`);

1
这实际上只是删除空格,而不是所有的空白字符。 - Björn Tantau

1

使用下面的sql语句,你就可以完成了:

SELECT replace(CustomerName,' ', '') FROM Customers;

你可以在这里测试这个示例: W3School


1
问题是如何“删除特定列中所有值的所有空格”,而您的答案没有做到这一点,更不用说五月份的答案更好了。 - daticon

0
注意:有两种空格,一种来自空格键,另一种来自制表符按钮,您需要对两者进行替换。我怀疑这就是为什么TRIM函数似乎并不总是起作用的原因。
所以
replace(replace(<field_name>,' ',''),'  ','')

(可能还有其他类型的空格,但这是我发现的两种)


0

这对我有效

UPDATE table SET col_name = TRIM(REPLACE(REPLACE(REPLACE(col_name, '\r', ' '), '\n', ' '), '\t', ' '));


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