Re: Reverse pattern matching

From: Mikito Harakiri <mikharakiri_nospaum_at_yahoo.com>
Date: 18 May 2005 09:54:32 -0700
Message-ID: <1116435272.113442.94740_at_g14g2000cwa.googlegroups.com>


Gary Greenberg wrote:
> I encountered an unusual problem and wonder if anyone had some
similar
> experience. I have a table T where the column contains text values
with
> wild cards and a query contain exact value. For example
> ------------------------
> | A | B |
> ------------------------
> |AB% | 1 |
> |X% | 2 |
> |XY% | 3 |
> |% | 4 |
> ------------------------
>
> I'd like to make a query "select B from T where A like 'XYZ'"
> I need to get a result sorted by maximum matching. For the liset case
it
> should be:
> 3
> 2
> 4
>
> Any help will be greatly appreciated.

x like 'AB%'

is roughly equivalent to

x between 'ABAAAA...' and 'ABZZZZZ...'

where A is the first symbol in ASCII range and Z is the last one. Therefore, a pattern with trailing % (and all pattelns you have seems to meet this criteria) is an interval!

Therefore, your reverse pattern matching problem is essentially the following:
Given a set (or a table) of intervals, find all the intervals that cover a given point. You would have no problem to make this statement formal as a query, although having an efficient access path via an index is a challenge. Received on Wed May 18 2005 - 18:54:32 CEST

Original text of this message