Обсуждение: replace_matches does not return {null}

Поиск
Список
Период
Сортировка

replace_matches does not return {null}

От
Andreas Gaab
Дата:

Hi,

 

I tried to order a text-column only by parts of the entries. Therefore I used regexp_matches(), but unfortunately I am loosing rows.

 

SELECT regexp_matches('abc','[0-9]+'),  regexp_matches('123','[0-9]+');

 

Does not return “{null}, {123}” but no result at all.

 

Is this behavior expected? How can I work around?

 

I am running postgres 8.4

 

 

Andreas

 

 

___________________________________________________________________________

 

SCANLAB AG

Dr. Andreas Simon Gaab

Entwicklung • R & D

 

Siemensstr. 2a • 82178 Puchheim • Germany

Tel. +49 (89) 800 746-513 • Fax +49 (89) 800 746-199

mailto:a.gaab@scanlab.dewww.scanlab.de

 

Amtsgericht München: HRB 124707 • USt-IdNr.: DE 129 456 351

Vorstand: Georg Hofner (Sprecher), Christian Huttenloher, Norbert Petschik

Aufsichtsrat (Vorsitz): Dr. Hans J. Langer

___________________________________________________________________________

 

Re: replace_matches does not return {null}

От
Tom Lane
Дата:
Andreas Gaab <A.Gaab@scanlab.de> writes:
> I tried to order a text-column only by parts of the entries. Therefore I used regexp_matches(), but unfortunately I
amloosing rows.
 

> SELECT regexp_matches('abc','[0-9]+'),  regexp_matches('123','[0-9]+');

> Does not return "{null}, {123}" but no result at all.

Yes, because regexp_matches returns a rowset of zero or more results.
The fine manual suggests putting it in a sub-select if what you want
is a null or a single result:
 SELECT ... , (SELECT regexp_matches(...)) FROM ...
        regards, tom lane