Обсуждение: Regular express question

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

Regular express question

От
David Goodenough
Дата:
I have a table that consists of a set of regular expressions, a priority
and a result.  I need to be able to match field in another table against
the set of regular expressions (ordered by priority) and use the first result.

Reading the documentation I can see how to put the regular expression
into an SQL statement (that is as text or a ? which my code provides) but
I can not see how to get the expression from the table.

David

Re: Regular express question

От
David Goodenough
Дата:
On Friday 22 June 2007, David Goodenough wrote:
> I have a table that consists of a set of regular expressions, a priority
> and a result.  I need to be able to match field in another table against
> the set of regular expressions (ordered by priority) and use the first
> result.
>
> Reading the documentation I can see how to put the regular expression
> into an SQL statement (that is as text or a ? which my code provides) but
> I can not see how to get the expression from the table.
>
> David
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster

OK, I worked it out for myself.  Of course I can put a field name on the
right hand side of the SIMILAR TO and the ? on the left had side, then it
works just as you would expect.  So:-

select result from rules where ? similar to "rule" order by priority limit 1

gives me the answer I want.

David

Re: Regular express question

От
"Albe Laurenz"
Дата:
David Goodenough wrote:
>
> I have a table that consists of a set of regular expressions, a
priority
> and a result.  I need to be able to match field in another table
against
> the set of regular expressions (ordered by priority) and use the first
result.
>
> Reading the documentation I can see how to put the regular expression
> into an SQL statement (that is as text or a ? which my code provides)
but
> I can not see how to get the expression from the table.

The only way I can see is to write a function in - say - PL/pgSQL.

Yours,
Laurenz Albe