sql >> Database teknologi >  >> RDS >> Mysql

Kæmper med en MySQL-database med telefonnumre

Det er meget mærkeligt, jeg har selv kæmpet med dette problem mange gange i løbet af de sidste 15 år og er generelt kommet med strukturer, der adskiller områdekoder, landekoder og nummer i separate felter osv. Men mens jeg læste dit spørgsmål dukkede en anden løsning op. ind i mit hoved kræver det et separat felt, men det er måske ikke passende for dig.

Du kunne have et separat felt kaldet reverse_phone_number, få dette automatisk udfyldt af DB-maskinen, så når folk søger, skal du blot vende søgestrengen om og bruge det indekserede omvendte felt med kun en % i slutningen af ​​den lignende streng, og derved tillade brugen af indeks.

Afhængigt af din DB-motor vil du muligvis være i stand til at oprette et indeks baseret på en brugerdefineret funktion, der gør det omvendte for dig og undgår behovet for et ekstra felt.

I nogle lande, f.eks. i Storbritannien, kan du have et problem med foranstillede nuller. Et britisk telefonnummer er repræsenteret som (områdenummer) (telefonnummer), f.eks. 01634 511098, når dette er internationaliseret, fjernes det indledende nul i områdekoden, og den internationale opkaldskode (+ eller 00) og landekoden (44) tilføjes. Dette resulterer i et internationalt telefonnummer på +441634511098. Enhver bruger, der søger efter 0163451109, ville ikke finde telefonnummeret, hvis det blev indtastet i internationaliseret format. Du kan løse dette problem ved at fjerne foranstillede nuller fra søgestrengen.

REDIGER Baseret på forslag fra Ollie Jones bør du gemme tallet som indtastet af brugeren og derefter fjerne foranstillede nuller, tegnsætning og mellemrum fra tallet, før du vender tilbage og gemmer i det omvendte felt. Brug derefter den samme algoritme til at fjerne søgestrengen, før du vender tilbage, find posten og vis derefter det oprindeligt indtastede tal tilbage til brugeren.




  1. Ret problem med SQL-databasegendannelse afventer adgang nægtet

  2. hvordan ser et B-træindeks på mere end 1 kolonne ud?

  3. Hvordan opretter man dummy-variable kolonner for tusindvis af kategorier i Google BigQuery?

  4. MySQL 8 opret ny bruger med adgangskode, der ikke virker