Grundsätzlich habe ich es mit einem schrecklich eingerichtet Tabelle, die ich gerne wieder aufbauen würde, aber ich bin mir nicht sicher, ob ich an dieser Stelle kann.SQL: Wählen Sie basierend auf regulären Ausdruck eindeutig
So ist die Tabelle der Adressen, und es hat eine Tonne von ähnlichen Einträgen für die gleiche Adresse. Aber es gibt manchmal geringfügige Abweichungen in der Adresse (d. H. Eine Raumnummer wird in IN GLEICHE SPALTE angeheftet).
So:
id | Ortsname | place_street
1 | Platziere einen Namen | 1001 Mercury Blvd
2 | Ortsname Zwei | 2388 Jupiter Street
3 | Platziere einen Namen | 1001 Mercury Blvd, Suite A
4 | Ortsname, Einer | 1001 Mercury Boulevard
5 | Place Nam Zwei | 2388 Jupiter Street, Rm 101
Was würde Ich mag es, in SQL tun (das ist MSSQL), wenn möglich, ist eine Abfrage tun, die wie ist:
SELECT DISTINCT place_name, place_street where [the first 4 letters of the place_name are the same] && [the first 4 characters of the place_street are the same].
, ich Raten Sie an diesem Punkt, erhalten:
Plac | 1001
Plac | 2388
Grundsätzlich kann ich dann herausfinden, was die Hauptadressen sind, die ich in eine andere Tabelle ausbrechen muss, um das zu normalisieren, weil der Rest nur leichte Ableitungen sind.
Ich hoffe, dass das Sinn macht.
Ich habe einige Nachforschungen gemacht und ich sehe Leute, die reguläre Ausdrücke in SQL verwenden, aber viele von ihnen scheinen C-Skripte oder so zu verwenden. Muss ich Regex-Funktionen schreiben und sie vor dem Ausführen regulärer Ausdrücke in SQL Server speichern?
Irgendeine Richtung auf, ob ich sie gerade in SQL schreiben kann oder wenn ich einen anderen Schritt habe, um zu gehen, wäre groß.
Oder auf, wie man dieses Problem anspricht.
Vielen Dank im Voraus!
Natürlich meintest du auserlesen, klar? ;) –
Nein. :) Sie brauchen "distinct" nicht, da die "group by" -Klausel das Gleiche tut, d. H. Jede Zeile in der Ergebnismenge ist eine eindeutige Kombination der ersten vier Zeichen von place_name und place_street. – Matt