sql >> Databasteknik >  >> RDS >> Sqlserver

SQL - Fråga telefonnummer som lagras inkonsekvent

OM du kan ändra tabellen (förutsatt att det är SQL Server 2005 och uppåt), kan du lägga till en beräknad kolumn i din tabell och bevara den. Den här kolumnen kan innehålla en "rensad" representation av ditt "telefonnummer"-fält.

Något så här:

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

och sedan:

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

Nu skulle kolumnen "CleanedPhone" alltid innehålla en "rensad" version av ditt telefonnummer - alltid något i stil med:555123456.

Eftersom det är ett PERSISTED-fält drar du inte heller någon prestationsstraff när du frågar - värdet skapas och lagras i din tabell och är tillgängligt som en normal kolumn.

Om detta kan du nu fråga ganska enkelt.

Marc



  1. mysql varbinary vs varchar

  2. Flyway Migration med java

  3. Hur ansluter man till IPv6-adresser i Kubernetes som körs på Google Container Engine?

  4. Vad gör en SQL-sats sargbar?