Thread: Is there an easy way to normalize-space with given string functions

Is there an easy way to normalize-space with given string functions

From
Janning Vygen
Date:
Hi,

i am looking for something like

$ SELECT btrim(replace(' too   many   spaces!  ', '\s+',' '), '');
too many spaces

i searched the function list and tried to combine to or more functions, but i 
miss a replace function which uses regular expressions.

Do i have to write my own function or did i miss something? trimming is well 
supported at the start and end of string, but no trimmin in the middle seems 
to be possible.

kind regards
janning



Janning Vygen <vygen@gmx.de> writes:
> i searched the function list and tried to combine to or more
> functions, but i miss a replace function which uses regular
> expressions.

There isn't one in the SQL standard.  Most people who need one write a
one-liner function in plperl or pltcl.

(Mind you, I don't know why we don't offer a built-in one --- the needed
regex engine is in there anyway.  I guess no one has gotten around to
getting agreement on a syntax.)
        regards, tom lane


Re: Is there an easy way to normalize-space with given string functions

From
Janning Vygen
Date:
Am Freitag, 23. April 2004 04:34 schrieb Tom Lane:
> Janning Vygen <vygen@gmx.de> writes:
> > i searched the function list and tried to combine to or more
> > functions, but i miss a replace function which uses regular
> > expressions.
>
> There isn't one in the SQL standard.  Most people who need one write a
> one-liner function in plperl or pltcl.

Thank you. 

> (Mind you, I don't know why we don't offer a built-in one --- the needed
> regex engine is in there anyway.  I guess no one has gotten around to
> getting agreement on a syntax.)

My suggestion:

Syntax:
substitute(string text, from text, to text);

Example:
substitute('  too  many spaces  ', '\s+', ' ');

Result:
' too many spaces '

But maybe its a bad idea to create new function names...

kind regards
janning