Re: How to perform text merge

Поиск
Список
Период
Сортировка
От Harald Fuchs
Тема Re: How to perform text merge
Дата
Msg-id pu4ojzm3o5.fsf@srv.protecting.net
обсуждение исходный текст
Ответ на How to perform text merge  ("Andrus" <kobruleht2@hot.ee>)
Список pgsql-general
In article <609BF3CE079445569FC0D047A5C816AD@andrusnotebook>,
"Andrus" <kobruleht2@hot.ee> writes:

> Database column contains merge data in text column.
> Expressions are between << and >> separators.
> How to replace them with database values ?

> For example, code below should return:

> Hello Tom Lane!

> How to implement textmerge procedure or other idea ?

> Andrus.

> create temp table person ( firstname text, lastname text ) on commit drop;
> insert into person values ('Tom', 'Lane');
> create temp table mergedata ( template text ) on commit drop;
> insert into mergedata values ('Hello <<firstname||'' ''||lastname>>!');

> select textmerge(template,'select * from person') from mergedata;

Here's a quick shot:

CREATE FUNCTION textmerge(tpl text, query text) RETURNS text AS $$
DECLARE
  pref text = substring(tpl FROM '(.*)<<');
  expr text = substring(tpl FROM '<<(.+)>>');
  post text = substring(tpl FROM '>>(.*)');
  tmp1 text = regexp_replace(query, E'\\*', expr);
  tmp2 text;
BEGIN
  EXECUTE tmp1 INTO tmp2;
  RETURN pref || tmp2 || post;
END;
$$ LANGUAGE plpgsql IMMUTABLE;

В списке pgsql-general по дате отправления:

Предыдущее
От: Frans Hals
Дата:
Сообщение: Re: Large index operation crashes postgres
Следующее
От: Mark Vantzelfde
Дата:
Сообщение: PostgreSQL on Windows