Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL — Zapytanie o numer telefonu, który jest niespójnie przechowywany

JEŚLI możesz zmienić tabelę (zakładając, że jest to SQL Server 2005 i wyżej), możesz dodać do tabeli kolumnę obliczeniową i utrwalić ją. Ta kolumna może zawierać „wyczyszczoną” reprezentację pola „numer telefonu”.

Coś takiego:

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

a następnie:

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

Teraz kolumna „Wyczyszczony telefon” zawsze zawierała „oczyszczoną” wersję Twojego numeru telefonu – zawsze coś w stylu:555123456.

Ponieważ jest to pole PERSISTED, również nie ponosisz spadku wydajności podczas wykonywania zapytania — wartość jest tworzona i przechowywana w tabeli i jest dostępna jako zwykła kolumna.

Dzięki temu możesz teraz dość łatwo zadawać zapytania.

Marek



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy INNER JOIN może zapewnić lepszą wydajność niż EXISTS?

  2. Uzyskaj szczegóły konta usługi usługi agenta SQL

  3. Uzyskiwanie i instalacja Microsoft SQL Server Management Studio

  4. SQL Server:AKTUALIZUJ tabelę za pomocą ORDER BY

  5. Zakleszczenie podczas SELECT/UPDATE