Замена регулярного выражения в PL/pgSQL

Если у меня есть следующий вход (исключая кавычки):

"The ancestral   territorial      imperatives of the    trumpeter swan"

Как может я сворачивать все несколько пробелов к одиночному пробелу так, чтобы вход был преобразован к:

"The ancestral territorial imperatives of the trumpeter swan"

Это будет используемым в триггерной функции на, вставляют/обновляют (который уже обрезает продвижение/конечные пробелы). В настоящее время это повышает исключение, если вход содержит несколько смежных пробелов, но я быть бы он просто преобразовывать его во что-то допустимое перед вставкой.

Каков лучший подход? Я, может казаться, не нахожу функцию замены регулярного выражения для PL/pgSQL. Существует a text_replace функция, но это только свернет самое большее два пробелов вниз к одному (значение, что три последовательных пробелов выйдут из строя к два). Вызывание этой функции много раз не идеально.

1
задан dreamlax 3 May 2010 в 05:23
поделиться

2 ответа

В PostgreSQL есть функция REGEXP_REPLACE, которую вы должны уметь использовать.

DECLARE
  result VARCHAR2(255);
BEGIN
  result := REGEXP_REPLACE(subject, $$ {2,}$$, $$ $$, 'g');
END;
2
ответ дан 3 September 2019 в 00:53
поделиться

Вы можете использовать plperl, и использовать регулярные выражения perl для этой цели.

Обновление - это хорошо, но plperl может позволить вам продержаться немного дольше.

0
ответ дан 3 September 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: