首页 > 解决方案 > 用列中的单个空格替换多个空格

问题描述

有很多行在列中有多个空格,title我想用一个空格替换它们。

update abc set title = REPLACE(title, "  ", " ");

什么都没有被替换。

我正在使用 phpMyAdmin。

我注意到(单击Simulate query我的查询转换为的按钮:

update abc set title = REPLACE(title, " ", " ");

所以用单个空格替换单个空格。

有什么帮助吗?

标签: mysql

解决方案


连续空格字符的数量可以是奇数或偶数。您可以用一个空格字符替换两个空格字符,并在修改后的字符串上再次进行类似的替换以覆盖所有奇数/偶数情况。

UPDATE abc SET title = REPLACE(REPLACE(title, '  ', ' '), '  ', ' ');

解释:

  • 2 个空格:第一次替换将转换为 1 个空格。第二次替换不会进一步修改。
  • 3 个空格:第一次替换会将 (2+1) 个空格转换为 (1+1) 个空格。第二个将 (1+1 = 2) 个空格转换为 1 个空格。
  • 4 个空格:第一次替换会将 (2+2) 个空格转换为 (1+1) 个空格。第二个将 (1+1 = 2) 个空格转换为 1 个空格。

等等...


演示:

mysql> select 
    -> dt.test_str, 
    -> REPLACE(REPLACE(dt.test_str, '  ', ' '), '  ', ' ') AS modified
    -> FROM 
    -> (SELECT 'thi   s is  a weird    string' AS test_str) AS dt ;
+--------------------------------+--------------------------+
| test_str                       | modified                 |
+--------------------------------+--------------------------+
| thi   s is  a weird    string | thi s is a weird string |
+--------------------------------+--------------------------+
1 row in set (0.00 sec)

推荐阅读