Thread: Textmatchning

Textmatchning

From
"A B"
Date:
Hi.
I would like to compare two columns a and b and find all cases where
a is a part of b, like this
select * from mytable where a ilike b;

but that will not give me a row in the case  when a = 'foo'  and b='FOOTBALL'
and I want that to be a match.

So how do I rewrite my expression? I can't find any way to add % to
make it match the way I want.

Re: Textmatchning

From
"Scott Marlowe"
Date:
On Wed, Sep 17, 2008 at 12:36 PM, A B <gentosaker@gmail.com> wrote:
> Hi.
> I would like to compare two columns a and b and find all cases where
> a is a part of b, like this
> select * from mytable where a ilike b;
>
> but that will not give me a row in the case  when a = 'foo'  and b='FOOTBALL'
> and I want that to be a match.
>
> So how do I rewrite my expression? I can't find any way to add % to
> make it match the way I want.

where b ilike '%'||a||'%';

?

Re: Textmatchning

From
Edoardo Panfili
Date:
A B ha scritto:
> Hi.
> I would like to compare two columns a and b and find all cases where
> a is a part of b, like this
> select * from mytable where a ilike b;
>
> but that will not give me a row in the case  when a = 'foo'  and b='FOOTBALL'
> and I want that to be a match.
>
> So how do I rewrite my expression? I can't find any way to add % to
> make it match the way I want.
It seems that the order is important.
http://www.postgresql.org/docs/8.3/interactive/functions-matching.html#FUNCTIONS-LIKE

select 'foo%' ilike 'FOOTBALL';
----------
  f


but


select 'FOOTBALL' ilike 'foo%';
----------
  t


Edoardo


Re: Textmatchning

From
"Daniel Verite"
Date:
    A B wrote:

> I would like to compare two columns a and b and find all cases where
> a is a part of b, like this
> select * from mytable where a ilike b;

"a is a part of b" can simply be expressed as:
  position(a in b)>0
and if you need case insensitivity:
  position(upper(a) in upper(b))>0

 Best regards,
--
 Daniel
 PostgreSQL-powered mail user agent and storage:
http://www.manitou-mail.org