MySQL Заменить строку из одного символа в другой - PullRequest
0 голосов
/ 14 февраля 2019

Я имею дело со строковыми путями, в которых есть индекс массива, обозначенный [#], где # - индекс.Этот индекс может быть чем угодно.То, что я пытаюсь сделать, это в моей строке пути удалить все вхождения [#].Таким образом, скобки и все, что в скобках, должны быть удалены.Я вижу функцию замены, но я не уверен, как использовать произвольную «середину» между скобками для замены.

Я хочу удалить из '[' в ']' и заменить его на ''.

Ex путь: Number[2].padding[1] уменьшен до Number.padding.

Прямо сейчас у меня есть что-то вроде:

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

Где я пытаюсь использовать % в качестве подстановочного знака, но он не работает.

1 Ответ

0 голосов
/ 14 февраля 2019

Если вы используете 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 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...