MySQL将字符串从一个字符替换为另一个

时间:2019-02-13 22:11:37

标签: mysql sql

我正在处理其中具有数组索引的字符串路径,用[#]表示,其中#是索引。该索引可以是任何值。我想做的是在我的路径字符串中,删除所有出现的[#]。因此,括号和括号内的所有内容都将被删除。我看到了替换功能,但是我不确定如何在方括号之间使用任意的“中间”来替换。

我想从'['移至']',并用''代替。

外部路径:Number[2].padding[1]减少为Number.padding

现在我有类似的东西:

replace(path, '[%]', '') 

在我要使用%作为通配符的地方,但是它不起作用。

1 个答案:

答案 0 :(得分:1)

如果您使用的是MySQL 8.0,则可以使用REGEXP_REPLACE来捕获诸如[#]之类的字符串部分,如下所示

SELECT REGEXP_REPLACE(@txt, '\\[[^]]*\\]', '');

正则表达式细目:

\\[      # opening square bracket
[^]]*    # 0 to N characters other than a closing square bracket 
\\]      # closing square bracket

带有测试数据的示例:

SET @txt = 'Number[2].padding[1] reduced to Number.padding';
SELECT @txt input, REGEXP_REPLACE(@txt, '\\[[^]]*\\]', '') output

| input                                          | output                                   |
| ---------------------------------------------- | ---------------------------------------- |
| Number[2].padding[1] reduced to Number.padding | Number.padding reduced to Number.padding |