Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL - Запитване за телефонен номер, които се съхраняват непоследователно

АКО можете да промените таблицата (ако приемем, че е SQL Server 2005 и нагоре), можете да добавите изчислена колона към вашата таблица и да я запазите. Тази колона може да съдържа "почистено" представяне на вашето поле "phonenumber".

Нещо подобно:

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

и след това:

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

Сега колоната ви „CleanedPhone“ винаги ще съдържа „почистена“ версия на вашия телефонен номер – винаги нещо като:555123456.

Тъй като това е ПОСТОЯННО поле, вие също не получавате понижаване на производителността при заявка - стойността се създава и съхранява във вашата таблица и е достъпна като нормална колона.

За това вече можете да правите заявки доста лесно.

Марк



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. конвертирайте функцията ms-access last() в sql сървър 2008

  2. как да получа sum(col2) като somename,(col2*col3)/Sum(col2) като somename1 за дадена дата

  3. Какви са еквивалентните C# типове данни за дата, час и отместване на дата и време на SQL Server?

  4. Активният резултат не съдържа полета, използващи PDO с MS SQL

  5. Предаване на масив като параметър към съхранена процедура на SQL 2005