mssql 2000

ratze79

Mitglied
Hallo!

Ich habe ein Problem und zwar möchte ich bevor ich Daten in eine Tabelle schreibe überprüfen ob nicht schon ähnliche vorhanden sind.
Ich möchte über die Artikelnummer suchen z. B. in der DB enthalten Artikel mit Artikelnr '103.9320' und/oder 'ABCD3932' ich möchte jetzt einen Artikel mit der Artikelnr 3932 einfügen aber vorher überprüfen ob die beiden Artikel nicht evtl identisch sind.

Artikelnr like '3932' funktioniert beim ersten Fall nicht da der Punkt in der Artikelnummer stört. Ich möchte aber auch nicht mit replace alle möglichen Zeichen rausfiltern.

Bietet SQL-Server2000 reguläre Ausdrücke an, wenn ja wie werden sie angewendet?

Danke im voraus

Gruß Ratze
 
Hi,

kannst Du das nicht einfach mit normalen Datenbankmitteln prüfen, also so hier:
SQL:
INSERT INTO
          t1 (a_id, a_artikel_nr)
SELECT 
          a_id, a_artikel_nr
FROM t1
           WHERE NOT EXISTS  (
                              SELECT * 
                              FROM t1
                               WHERE a_artikel_nr = 3932 
                              )
Grüße
 
Hallo!

Ersteinmal danke für die Antwort. Ich glaube das, dass mein Problem nicht löst, denn bei dir würde der Datensatz nur dann nicht eingefügt werden wenn es genau diese Artikelnummer gibt. Ich möchte aber gleiche Artikel die evtl. von verschieden Lieferanten kommen und dadurch evtl. abweichende Artikelnummern besitzen anzeigen lassen. Damit diese nicht doppelt angelegt werden.

Bsp:
vorhandene Artikel:
Lieferant A, Artikelnr abc3932
Lieferant B, Artikelnr 039.320

neuer Artikel:
Lieferant C, Artikelnr 3932

In diesem Fall soll mir das System die oberen beiden Artikel ausgeben, so dass der User entscheiden kann/soll ob es ein Duplikat oder Neuanlage ist.

Ich habe es schon mit soundex() probiert allerdings werden mir dann zu viele Artikel ausgegeben die keine Relevanz haben. Mein Lösungsansatz ist, alle Buchstaben und Sonderzeichen aus den Artikelnummern zu filtern und dann mit der neue einzufügenden zu vergleichen.
Allerdings wird das mit replace() viel zu aufwendig, daher die Frage nach regulären Ausdrücken.

Danke im voraus

Gruß Ratze
 
Hallo,

also leider kenne ich mich nicht mit MSSQL2000 aus, ob-bzw. wie RegEx dort zur Verwendung kommen.

Prinzipiell funktioniert das entfernen von Bzchstaben leezeichen und z.B. einem Punkt so:

Mein Suchstring:
1.23abcABC1232....... ho123
PHP:
RegEx = [a-zA-Z. ]
Ergebnis:
1231232123

Wie jetzt das substituieren bei MSSQL geht müsstest du dann rausbekommen. Hier noch ein netter online RegEx Tester: http://www.regextester.com/

Hoffe es hilft ein wenig
 
Hallo!

Ich habe es jetzt anders gelöst und zwar nutze ich jetzt die Regex von vb und übergebe dann einfach die formatierte Artikelnummer als variable meinem SQL-Statement und lasse es dann ausführen.

Danke für deine Bemühungen!

Gruß Ratze
 
Zurück