Re: Help: Using a regular expression match as a value

Поиск
Список
Период
Сортировка
От tjk@tksoft.com
Тема Re: Help: Using a regular expression match as a value
Дата
Msg-id 200010241047.DAA13735@uno.tksoft.com
обсуждение исходный текст
Ответ на Help: Using a regular expression match as a value  ("Richard DeVenezia" <radevenz@ix.netcom.com>)
Список pgsql-sql
Richard,

Please correct me if I am wrong.

You want to do something like:

select $1 from captives where firstname ~ '^(R[^ \t,]*d)$';

And get as result:
lastname
Richard
Richard
Richard
Ricard
Richard
Rolland
Richard
In this case, the above query is same as:
select firstname from captives where firstname ~ '^R[^ \t,]*d$';

If the firstname field contains entries like "Richard, Elvis" and "Richard Amadeus,"
then you want something like:
select $1 from captives where firstname ~ '^(R[^ \t,]*d)[ \t,]';
which would return the first name in the field but not subsequent 
names.
I am afraid there is no built in solution to get around these scenarios.
You could do:
select substring(firstname from 1 for (position(' ' in firstname)-1)) from captives where firstname ~ '^R[^ ]*d ' union
selectfirstname from captives where firstname ~ '^R[^ ]*d$';
 

This would get you what you wanted, for this one scenario.

I know it's not what you hoped, but you might be able to
make do with this.


Troy



> 
> I am just getting started with pgsql and have read available docs I can
> find.
> 
> I know I can match a row in a where clause using a regular expression.
> 
> How can I use what was regexp matched (e.g. perl $1,$2, etc...) as a column
> assignment ?
> 
> I'm looking for something like this?
> select ...
> ...
> $1 of firstname, /^R.*d/ as name_starts_with_r_and_ends_with_d
> ...
> 
> TIA
> 
> Richard DeVenezia
> 
> 



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

Предыдущее
От: "pgsql-sql"
Дата:
Сообщение: Re: Large Objects
Следующее
От: Ferruccio Zamuner
Дата:
Сообщение: Permission and users