Thread: Textmatchning
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.
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||'%'; ?
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
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