Man sollte eben immer darauf aufpassen, wie die Daten in der Datenbank abgelegt werden. So wie es scheint ist die Telefonnummer stumpf als Text dort gespeichert worden, was sich nun rächt. Besser wäre es gewesen und ist es, solche Daten kontrolliert in die Datenbank zu schreiben.
Es ist unerheblich, in welcher Art diese in der Datenbank abgelegt werden, es muss nur eben reproduzierbar sein. Helfen kann dabei ein sogenanntes
ValueObject (in Delphi am einfachsten mit einem Record darstellbar).
Dieses ValueObject wird dann mit einem Konstruktor erzeugt und der lässt eben nur gültige Einträge zu. Gerade bei Rufnummern kann man da auch ein sehr schönes Konstrukt bauen, was dann abhängig vom aktuellen Kontext die Rufnummern ausgibt und auch annimmt.
Nehmen wir an wir befinden uns in Hamburg, dann ist der Kontext
+49 40. Erzeugt man nun ein VO mit
123456 dann wird das intern und für die Datenbank als
+49 40 123456 gespeichert. Bei einer Abfrage würde aber wieder nur
123456 herauskommen.
Die gleiche Rufnummer ergibt für den Kontext Berlin
+49 30 dann
040 123456.
Im Übrigen gibt es hier im Forum ein bisserl Code von mir genau zu dem Thema Rufnummer Validierung und Formatierung. Einfach mal die Suche bemühen.