如何删除两个或多个单词之间的多个空格?

时间:2019-05-07 10:46:00

标签: mysql sql

我想删除字符串之间的空格。空间计数不是固定的。这该怎么做? 例如:

'ABCD   123'
'ABCD         123'

4 个答案:

答案 0 :(得分:4)

您可以使用replace()技巧:

select replace(replace(replace(col, ' ', '><'), '<>', ''), '><', ' ')

这假定该字符串不包含用于替换的字符。 (可以使用任何一对字符。)

如果您的字符串始终采用建议的形式-两个仅在中间带有空格的字符串,您也可以这样做:

select concat(substring_index(col, ' ', 1), ' ',
              substring_index(col, ' ', -1)
             )

编辑:

如果要删除所有 个空格,只需执行以下操作:

replace(str, ' ', '')

上面是留一个空格。

答案 1 :(得分:3)

为完善答案,在MySQL 8+中,我们可以尝试使用REGEXP_REPLACE

SELECT REGEXP_REPLACE(col, '[ ]+', '') AS col_out
FROM yourTable;

如果您想在单词之间保持一个空格,则只需将替换项留一个空格而不是空字符串即可。

答案 2 :(得分:0)

在不知道使用此功能的更大范围的情况下,我建议您研究一下replace函数。

Microsoft Documentation

MYSQL Documentation

REPLACE('ABCD   123',' ','')

答案 3 :(得分:0)

使用substring_index

set @str='ABC 123';

select concat(a , b) as "Result String"
  from
   (
     select substring_index(@str,' ',1) a ,substring_index(@str,' ',-1) b
   ) q;

Result String
-------------
ABC123