Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL - Kueri Nomor Telepon yang disimpan secara tidak konsisten

JIKA Anda dapat mengubah tabel (dengan asumsi itu adalah SQL Server 2005 dan lebih tinggi), Anda bisa menambahkan kolom yang dihitung ke tabel Anda, dan mempertahankannya. Kolom ini dapat menampung representasi "dibersihkan" dari bidang "nomor telepon" Anda.

Sesuatu seperti ini:

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

lalu:

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

Sekarang, kolom "Telepon Dibersihkan" Anda akan selalu berisi versi nomor telepon Anda yang "dibersihkan" - selalu seperti:555123456.

Karena ini adalah bidang PERSISTED, Anda juga tidak dikenakan penalti kinerja saat membuat kueri - nilainya dibuat dan disimpan di tabel Anda, dan tersedia sebagai kolom normal.

Tentang ini, Anda sekarang dapat melakukan kueri dengan cukup mudah.

Marc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. IsNumeric di SQL Server GABUNG

  2. SQL Server:Operasi terpisah

  3. Cara mengambil gambar biner dari database menggunakan C# di ASP.NET

  4. Contoh Konversi 'tanggal' ke 'datetimeoffset' di SQL Server (T-SQL)

  5. Cara efisien SQL untuk bergabung dengan tabel di mana semua nilai ada