0

是否可以通过删除给定字符串或字符前后的空格(1 个或多个空格)来更新行?我需要去除特定字符(@)之前和之后的所有空格,但还要保留单元格中的其他空格。

例子:

'This is a simple     @ example'

应该更新为

'This is a simple@example'

同样地:

'This is another  @example' 

应该更新为

'This is another@example'

我可以使用 PHP 来做到这一点,但如果有一种方法可以在单个查询中完成此操作会容易得多。

4

2 回答 2

0

那这个呢:

SELECT REPLACE(REPLACE(line, ' @', '@'), '@ ', '@') FROM tab1;

sqlfiddle

更新:

允许在 @ 之前或之后删除任意数量的空格,请执行以下操作:

SELECT CONCAT(RTRIM(LEFT(line,LOCATE('@',line)-1)),'@',
       LTRIM(SUBSTR(line,LOCATE('@',line)+1)))
FROM tab1;

看到新的sqlfiddle来玩这个。

请注意,如果您在该行中有多个 @,则此方法仅适用于第一个。

于 2013-04-26T15:08:22.760 回答
0

没有可用于替换的默认正则表达式。所以你有的选择是:

  1. 使用正则表达式替换扩展 MySQL: 您可以使用 UDF(用户定义的函数,确切地说是这个)来进行正则表达式替换。然后,您可以使用类似的东西\s*@\s*来表示@.

  2. 使用默认替换: 您需要对替换进行“硬编码”以在 之前和之后占几个空格,这@是一项繁琐(且永远不会完成)的任务。你最终会得到很多替换,或者重复某个功能(从@标志中删除 100 次一个空格)。需要明确的是,评论中提到的双重替换和@luksch 的回答不足以容纳超过 1 个空间。

于 2013-04-26T15:09:33.833 回答