Найти простую позицию соответствия регулярному выражению в строке в PostgreSQL - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь найти первую позицию регулярного выражения в строке (точный идентификатор позиции), чтобы иметь возможность удалить его, но я не могу найти такое решение в PostgreSQL.

Мой запрос съеденразделители и объединяет строки и пытается вырезать только значения между разделителями. Например, когда в столбце есть строковое значение, например:

57080*570801*157080*5708011
670811*67081*670810*670815

, я пытался использовать:

UPDATE tab 
set str = (REGEXP_REPLACE(str, '^57080*', '')
WHERE myColumn=159880;

или

UPDATE tab 
set str = (REGEXP_REPLACE(str, '*57080*', '')
WHERE myColumn=159880;

или

UPDATE tab 
set str = (REGEXP_REPLACE(str, '*57080$', '')
WHERE myColumn=159880;    

Однако это мне не поможет, потому что после использования (REGEXP_REPLACE (str, '* 57080 *', '') у меня застрял идентификатор (например, 57080570801). Мне нужно как-то найти свою позицию регулярного выражения, чтобы иметь возможность вырезать только идентификатор. После этого я всегда могу использовать REPLACE (string , '**', '*'), который будет вырезать двойные символы, или

SET str = CASE
WHEN str LIKE '*%' THEN RIGHT (str, LENGTH (str) -1)
WHEN str LIKE '% *' THEN LEFT (str, LENGTH (str) -1)

будет вырезать начальный / конечный символы (*). Кто-нибудь знает, как легко найти позиции такого регулярного выражения.

1 Ответ

1 голос
/ 15 октября 2019

Используйте маркеры «начало слова» и «конец слова»:

regexp_replace(str, '\m12345\M', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...