是否可以通过删除给定字符串或char之前和之后的空格(1个或多个空格)来更新行?我需要剥离特定字符(@)之前和之后的所有空格,但也要保留单元格中的其他空格。
示例:
'This is a simple @ example'
应更新为
'This is a simple@example'
同样:
'This is another @example'
应更新为
'This is another@example'
我可以使用PHP来做到这一点,但如果有一种方法可以在单个查询中完成此操作,则会更容易。
答案 0 :(得分:0)
这个怎么样:
SELECT REPLACE(REPLACE(line, ' @', '@'), '@ ', '@') FROM tab1;
更新:
允许在@之前或之后删除任意数量的空格:
SELECT CONCAT(RTRIM(LEFT(line,LOCATE('@',line)-1)),'@',
LTRIM(SUBSTR(line,LOCATE('@',line)+1)))
FROM tab1;
请参阅新的sqlfiddle来解决这个问题。
请注意,如果行中有多个@,则此方法仅适用于第一个。
答案 1 :(得分:0)
没有可以替换的默认正则表达式。所以你有的选择是:
使用正则表达式替换扩展MySQL:
您可以使用UDF(用户定义函数this one to be exact)来执行正则表达式替换。然后,您可以使用\s*@\s*
之类的内容来表示@
周围的多个空格。
使用默认替换:
你需要对你的替换进行'硬编码'以考虑@
之前和之后的几个空格,这是一项繁琐(并且永不完成)的任务。您最终会进行大量替换,或重复某项功能(从@
符号中删除100次空格)。要明确的是,在评论和@luksch的答案中提到的双重替换不足以满足超过1个空格。