![]() |
Datenbank: MYSQL • Version: 4 • Zugriff über: MYDAC
Ruffnummer aus der Tabelle Suchen mit möglichen zeichen..
Hallo.
Habe ein Feld Telefonnummer (String). Nun kann in diesen Feld folgendes stehen: 0451-1111111 oder 04951-11111111 oder +004951-1111111 oder 0451 - 11 11 11 11 1 oder sonst was.. Nun möchte ich nach diese Nummer suchen 04511111111 wie kann ich das realisieren nach möglichkeit per SQL. (Das sin ca. 100 DS) |
Re: Ruffnummer aus der Tabelle Suchen mit möglichen zeichen.
du musst denke ich nacheinander nach jedem einzelnen Zeichen suchen
|
Re: Ruffnummer aus der Tabelle Suchen mit möglichen zeichen.
Hallo,
mit Standard-SQL bekommst du das nicht hin (LIKE kann sowas nicht). Falls du das auf dem Server suchen musst, kannst du nur eine Stored Procedure nehmen, die jeden Datensatz abklappert und intern (kompliziert) über substring die Zeichen '-', ' ' usw. ausfiltert, dann eine Telefonnummer bastelt und dann vergleicht. Heiko |
Re: Ruffnummer aus der Tabelle Suchen mit möglichen zeichen.
Hi,
Wenn man das Statement im Code basteln kann, müsste es in etwa so aussehen:
SQL-Code:
Besser wäre natürlich, mann würde die Nummer über einen Trigger formatiert in einem 2. Feld ablegen.
... where telefonnummer like '%4%5%1%1%1%1%1%1%1%1%';
Aber wie das bei MySQL funktioniert, weiss ich nicht. Cu, frank |
Re: Ruffnummer aus der Tabelle Suchen mit möglichen zeichen.
Du könntest die Telefonnummer in zwei Felder abspeichern:
Formatiert (0451-1111111) und nur als Ziffernfolge (04511111111) Beim Suchen entfernst du alle Sonderzeichen und suchst nur nach der Ziffernfolge. Für die internat. Vorwahl (z.B. +49) musst du dir noch zusätzlich Gedanken machen. |
Re: Ruffnummer aus der Tabelle Suchen mit möglichen zeichen.
shmia Diese lösung ist mir auch lieber. (während der Pause bin ich auch auf diese Lösung gekommen) ;)
ObBeforPost wird mir die integerzahlen in einen extrafeld abspeichern... Danke für ihre Hilfe. |
Re: Ruffnummer aus der Tabelle Suchen mit möglichen zeichen.
Delphi-Quellcode:
nun habe ich alles.. um die Abfrage mache ich mir nun keine Sorgen mehr... :)
Function TForm1.GibNummerAusString(Nr:String):String;
var i, tr_i: Integer; Nummer:String; begin Nummer := ''; for i := 1 to Length(Nr) do begin If TryStrToInt(Nr[i],tr_i) Then Nummer := Nummer + Nr[i]; end; Result := Nummer; end; |
Re: Ruffnummer aus der Tabelle Suchen mit möglichen zeichen.
Denk daran, dass ein 32Bit integer nur bis 2147483647 reicht; also nur 9 bis 10 Ziffern aufnehmen kann.
Nimm besser folgende Funktion:
Delphi-Quellcode:
// kopiert aus der JCL
function StrKeepChars(const S: string; const Chars: TSysCharSet): string; var Source, Dest: PChar; Len, Index: Integer; begin Len := Length(S); SetLength(Result, Len); UniqueString(Result); Source := PChar(S); Dest := PChar(Result); for Index := 0 to Len-1 do begin if Source^ in Chars then begin Dest^ := Source^; Inc(Dest,SizeOf(Char)); end; Inc(Source,SizeOf(Char)); end; SetLength(Result, (Longint(Dest) - Longint(PChar(Result))) div SizeOf(Char)); end; telnr_ohne_sonderzeichen := StrKeepChars(telnr, ['0'..'9']); |
Re: Ruffnummer aus der Tabelle Suchen mit möglichen zeichen.
Delphi-Quellcode:
Es wird nur 1 zeichen überprüft... ;)
If TryStrToInt(Nr[i],tr_i) Then Nummer := Nummer + Nr[i];
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz