Sql-regexp

hallo!
ich habe eine mysql-adressen datenbank, in der telefonnummern in verschiedenen formaten gespeichert sind:
z.b. (0123)456-789 oder aber auch nur so 0123-4566…oder so 12345678 oder oder oder…

ich hab jetzt eine eingehende telefonnummer im format 0123456 und möchte diese i.d. db vergleichen! klar kann ich i.d. db ein einheitliches format einführen und meine nummer dementsprechend formatieren, will ich aber nicht!

mit regexp habe ich das umformatieren mit dem ausdruck auch schon hinbekommen:

Dim strA, strB

strA="(8–823ASSS238)5(55-12/1\2"
set re=new regexp
re.global=true
re.pattern="[^\d]"
strB = „“
strA = re.Replace(strA, strB)

ich ziehe alle sonderzeichen raus und ersetze diese durch nix „“ -> funktioniert!

jetzt hätte ich das ganze gerne direkt im sql-statement, also irgentwie so:

dim nummer = „123456“
sqlstatement= " select * from data where Telefon REGEXP ‚[/d]*‘ = ‚" & Nr & "‘"

also, daß aus den nummern aus der db alle sonderzeichen irgentwie extrahiert werden und ich die dann mit der einkommenden nummer vergleichen kann!

irgentwelche ideen? ansonsten muss ich doch das format i.d. db ändern!
danke jochen

Hallo Jochen!

ich habe eine mysql-adressen datenbank, in der telefonnummern
in verschiedenen formaten gespeichert sind

ich hab jetzt eine eingehende telefonnummer im format 0123456
und möchte diese i.d. db vergleichen!

jetzt hätte ich das ganze gerne direkt im sql-statement, also
irgentwie so:

dim nummer = „123456“
sqlstatement= " select * from data where Telefon REGEXP
‚[/d]*‘ = ‚" & Nr & "‘"
also, daß aus den nummern aus der db alle sonderzeichen

irgentwie extrahiert werden und ich die dann mit der
einkommenden nummer vergleichen kann!

irgentwelche ideen? ansonsten muss ich doch das format i.d. db
ändern!

Nach der MySQL-Doku gibt Dir die REGEXP-Funktion nur
0 (kein Treffer) oder 1 (Treffer) zurück, aber nicht
den umgewandelten Ausdruck.

Damit hast Du keine Chance, mit MySQL-Bordmitteln eine
Regex-Ersetzung vorzunehmen.

Wenn es Dir auf die genaue Schreibweise der Telefonnummer
bei der Anzeige ankommt, könntest Du eine zusätzliche
Vergleichsspalte tel_normalisiert einführen, in der Du die
Telefonnummer ohne Sonderzeichen speicherst. Mit diesen
Werten kannst Du dann ohne Verrenkungen in SQL-Vergleichen
arbeiten. Zur Anzeige verwendest Du weiterhin die Spalte mit
den nicht-formatierten Werten.

Gruß,
-Andreas.

hi andreas!
danke für die schnelle antwort! ich habs ja befürchtet :smile:, naja, dann werd ich die tabelle formatieren. ist auch kein problem, aber der vorteile beim auslesen wäre gewesen, daß ich mein programm unabhängig von der formatierung i.d. db hätte laufen lassen können! naja, ist nicht soo wild,
gruß jochen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]