Das bringt doch nichts, wenn die gespeicherte Nummer z.B. '01 23 45' lautet und Du nach '012345' suchst.
Da SQLLite verwendet wird, scheint die Datenmenge nicht sonderlich groß zu sein. Also alles in den Speicher, dann suchen und fettig.
Delphi-Quellcode:
Query.Text := '
Select ID,Telefonnummer from Tabelle';
Query.Open();
While not Query.EOF
do begin
if PhoneNumberMatches(MySearchString,
Query['
Telefonnummer'])
Then
Results := Results +
Query['
ID']+'
,';
Query.Next;
End;
if Results<>'
'
then begin
setlength (Results, Length (Results) - 1);
Query.Close;
Query.Text := '
Select * from Tabelle where ID in ('+Results+'
)';
Query.Open;
Sind halt 2 Queries. Die erste
Query liefert alle Telefonnummern und die Record-ID. Dann wird eine Liste von IDs der Records erzeugt, deren Telefonnummer past und anschließend werden nur diese Records gelesen.
Mit einem anderen RDBMS kann man sich eine mehr oder minder komplexe Funktion (UDF) erstellen, das Matchen übernimmt, aber mit SQLite geht das eben nicht.