Like und Wildcard

Hi,

ich hab zwei Tabellen die ich miteinander überprüfen will. Dabei werden jeweils eine Spalte aus beiden Tabellen miteinander über den “like” Operator miteinander verglichen. Allerdings will ich eine höhrere Trefferqoute mit Wildcards erreichen.

Mein Befehl sieht bisher so aus:

select * from tabelle1 as A, tabelle2 as B where A.spalte1 like B.spalte2

Und jetzt hätte ich gerne jeweils ein Wildcard vor und nach dem abzugleichenden Wort:

select * from tabelle1 as A, tabelle2 as B where A.spalte1 like %B.spalte2%

Geht möglicherweise schöner als wie folgt:

test=*# select * from tab_a;
 id |  s
----+------
  1 | foo
  2 | bar
  3 | batz
(3 rows)

test=*# select * from tab_b;
 id |             s
----+----------------------------
  1 | das ist foo in zeile 1
  2 | das ist wurscht in zeile 2
(2 rows)

test=*# select * from tab_a, tab_b where length(tab_b.s) > length(regexp_replace(tab_b.s,tab_a.s,''));
 id |  s  | id |           s
----+-----+----+------------------------
  1 | foo |  1 | das ist foo in zeile 1
(1 row)

Andreas