From: | "tjk(at)tksoft(dot)com" <tjk(at)tksoft(dot)com> |
---|---|
To: | radevenz(at)ix(dot)netcom(dot)com (Richard DeVenezia) |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Help: Using a regular expression match as a value |
Date: | 2000-10-24 10:47:26 |
Message-ID: | 200010241047.DAA13735@uno.tksoft.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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 select firstname
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
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Craig May | 2000-10-24 13:21:08 | Like Query on BLOB's |
Previous Message | Craig May | 2000-10-24 10:37:42 | Postgresql Site Search |