sql >> Database teknologi >  >> RDS >> Sqlserver

SQL - Forespørgselstelefonnummer, der er gemt inkonsekvent

HVIS du kan ændre tabellen (forudsat at det er SQL Server 2005 og op), kan du tilføje en beregnet kolonne til din tabel og fortsætte med den. Denne kolonne kunne indeholde en "opryddet" repræsentation af dit "telefonnummer"-felt.

Noget som dette:

 create function dbo.CleanPhone(@phone varchar(100))
 returns varchar(100)
 with schemabinding
 as begin
   return
     replace(replace(replace(replace(replace(replace(@phone, ' ', ''), 
             '-', ''), '(', ''), ')', ''), '-', ''), '+', '')
 end

og derefter:

alter table (yourtable)
 add cleanedPhone as dbo.CleanPhone(Phone) persisted

Nu ville din "CleanedPhone"-kolonne altid indeholdt en "opryddet" version af dit telefonnummer - altid noget i stil med:555123456.

Da det er et PERSISTED-felt, pådrager du dig heller ikke en ydeevnestraf, når du forespørger - værdien oprettes og gemmes i din tabel og er tilgængelig som en normal kolonne.

På dette kunne du nu forespørge ganske let.

Marc



  1. PostgreSQL 9.1 ved hjælp af collate i udvalgte udsagn

  2. Hvordan dumper man alle vores billeder fra et VARBINARY(MAX) felt i SQL Server 2008 til filsystemet?

  3. PHP mysql forespørgsel dommer og ikke ekko den gentage del

  4. Rekursiv forespørgsel til tabelafhængigheder er ikke tilbagevendende, ikke så meget, som jeg gerne vil