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', " ", "|"))
无法在一个查询中处理多个或单个空格。
这适用于一个空格,如果在一个查询中有多个空格,我需要它才能工作。
答案 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
' ', '|')