MySQL-删除给定字符串或字符前后的空格
是否可以通过删除给定字符串或字符前后的空格(1个或多个空格)来更新行?我需要删除特定字符(@)前后的所有空格,但同时保留单元格中的其他空格 例如:MySQL-删除给定字符串或字符前后的空格,mysql,Mysql,是否可以通过删除给定字符串或字符前后的空格(1个或多个空格)来更新行?我需要删除特定字符(@)前后的所有空格,但同时保留单元格中的其他空格 例如: 'This is a simple @ example' 应更新至 'This is a simple@example' 'This is another@example' 同样地: 'This is another @example' 应更新至 'This is a simple@example' 'This is anoth
'This is a simple @ example'
应更新至
'This is a simple@example'
'This is another@example'
同样地:
'This is another @example'
应更新至
'This is a simple@example'
'This is another@example'
我可以使用PHP来实现这一点,但如果有一种方法可以在单个查询中实现这一点,那就容易多了 这个呢:
SELECT REPLACE(REPLACE(line, ' @', '@'), '@ ', '@') FROM tab1;
更新:
要允许在@do this之前或之后删除任意数量的空格,请执行以下操作:
SELECT CONCAT(RTRIM(LEFT(line,LOCATE('@',line)-1)),'@',
LTRIM(SUBSTR(line,LOCATE('@',line)+1)))
FROM tab1;
看看这个新的游戏
请注意,如果行中有多个@,则此方法仅适用于第一个 没有可用于替换的默认正则表达式。因此,您可以选择:
\s*@\s*
的内容来指示@
周围的多个空格@
之前和之后占用多个空格,这是一项繁琐(而且永远不会完成)的任务。你会得到大量的替换,或者某个函数的重复(从@
符号中删除100倍于一个空格)。需要明确的是,注释和@luksch'答案中提到的double替换将不足以容纳超过1个空格replace(替换(您的字段,'@','@'),'@','@')
。继续运行,直到没有更多的替换。@MarcB回答。替换将按照@MarcB提及的方式进行。我已经编辑了我的问题,以使示例更清楚地说明有多个空格的情况。实际上,您所需要做的就是将空白处替换为空。3。在@处拆分尾钉,并使用LTRIM
和RTRIM
。请参阅我的答案更新:)UDF的缺点是,您需要在要运行查询的每个mysql实例上创建这些。如果没有问题,那么您的解决方案1是完美的。