如何执行MYSQL REPLACE以用|替换多个或单个空格(管)

时间:2016-03-26 19:09:56

标签: mysql c regex

SELECT * FROM `spamfilter` WHERE `words` REGEXP (REPLACE('test won hello spam', " ", "|"))

适用于一个空间。

SELECT * FROM `spamfilter` WHERE `words` REGEXP (REPLACE('test[2 spaces]won[2 spaces]hello[2 spaces]spam', "[2 spaces]", "|"))

适用于两个空格。

SELECT * FROM `spamfilter` WHERE `words` REGEXP (REPLACE('test[5 space]won[2 space]hello[1 space]spam', " ", "|"))

无法在一个查询中处理多个或单个空格。

这适用于一个空格,如果在一个查询中有多个空格,我需要它才能工作。

2 个答案:

答案 0 :(得分:0)

我假设您知道文本中多个间隔符的最大长度。

假设最大长度为3:在这种情况下,你必须像这样运行3次查询:

// for three spaces
 update tableName set colName = REPLACE(LTRIM(RTRIM(colName)), '   ', '|') where colName like '% %'

//for two spaces
 update tableName set colName = REPLACE(LTRIM(RTRIM(colName)), '  ', '|') where colName like '% %'

//for one space
update tableName set colName = REPLACE(LTRIM(RTRIM(colName)), ' ', ' ') where colName like '% %'

可能有更好的方法,但这个方法也应该有效。

答案 1 :(得分:0)

我认为这最多可以处理12个空格:

REPLACE(
REPLACE(
REPLACE(
REPLACE(TRIM(col), '     ', ' ')  --5
                   '   ', ' ')    --3
                   '  ', ' ')     --2
                   ' ', '|')