Korrespondierenden Datensatz aus TabA in TabB finden (Ähnlichkeitssuche ?)

17/02/2008 - 08:44 von Nicolas Nickisch | Report spam
Hi NG,
das Subject gibt sicherlich mein Problem nur unvollstàndig wieder.
Nach einigen Anfragen und herumprobieren ohne gutes Ergebnis hier nochmals
die Frage.

Ich habe eine Tabelle A, die neben vielen anderen Dingen ein Feld
Versicherungsnummer enthàlt. Dieses (String)feld enthàlt Zahlen- und/oder
Buchstabenkombinationen, teilweise mit Leerstellen oder Bindestrichen
getrennt.
Dazu kommen Felder mit Name, Vorname und Geburtsdatum.

Tabelle B enthàlt Kontobewegungen, die eine andere Anwednung tapfer per HBCI
vond er Bank holt und in die Datenabnk schreibt.
Das Feld Verwendungszweck enthàlt den von der Bank übermittelten (und mit
CRLFs gespickten) Verwendungszweck.
Die Zeilenumbrüche filtere ich schon raus - soweit ok.
Ich möchte nun für einen Datensatz in Tabelle A einen korrespondierenden
Datensatz in Tabelle B finden.
Verknüpfungsschlüssel wàre eigentlich die Versicherungsnummer - und hier
wird es kompliziert.
Die Versicherungsnummer kommt zwar im Verwendungszweck vor, jedoch nicht
immer an gleicher Stelle. manchmal wird auch eine Buchstabengruppe
weggelassen oder eine Leerstelle wird hinzugefügt.
Jednefalls funkioniert die Suche in Tabelle B mit LIKE *Versierungsnummer*
nur unzuverlàssig, da nur exakt gleiche Schreibweisen der
Versicherungsnummer gefunden werden.


Làsst sich das Problem mit der Soundex-Funktion lösen ? Ich habe diese
Funktion noch nie angewandt und stelle mir das auch nach Doku schwierig vor.
Gibt es alterbnative Lösungen ?

Gruss Nico

P.S: Anscheinend geht es auf Weihnachten zu. War jedenfalls schon ganz schön
kalt heute morgen !

Gebe ich als Kriterium
 

Lesen sie die antworten

#1 Uwe Ricken
17/02/2008 - 09:42 | Warnen spam
Hallo Nicolas,

versuch's mit PATINDEX. Damit kannst Du Zeichenfolgen suchen und
der Offset der gefundenen Zeichenfolge wird ausgegeben.

Für eine Abfrage sàhe das dann so aus:

SELECT a.*
FROM TabelleA a INNER JOIN TabelleB b
ON (PATINDEX(a.Versicherungsnummer, b.TextFeild) <> 0)

Dann kannst Du dir auch das Filtern von CRLF usw. sparen ;-)

HTH ...
Gruß, Uwe Ricken
MCP for SQL Server 2000 Database Implementation

db-Berater GmbH - 64390 Erzhausen
http://www.db-berater.de
http://www.memberadmin.de
http://www.conferenceadmin.de
____________________________________________________
dbdev: http://www.dbdev.org
FAQ: http://www.donkarl.com/AccessFAQ.htm

Ähnliche fragen