sql >> Databáze >  >> RDS >> Sqlserver

SQL – dotaz na telefonní číslo, které jsou uloženy nekonzistentně

POKUD můžete tabulku změnit (za předpokladu, že se jedná o SQL Server 2005 a nahoru), můžete do tabulky přidat vypočítaný sloupec a zachovat jej. Tento sloupec může obsahovat „vyčištěnou“ reprezentaci vašeho pole „telefonní číslo“.

Něco takového:

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

a poté:

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

Nyní by váš sloupec „Vyčištěný telefon“ vždy obsahoval „vyčištěnou“ verzi vašeho telefonního čísla – vždy něco jako:555123456.

Vzhledem k tomu, že se jedná o pole PERSISTED, nedochází k žádnému snížení výkonu při dotazování – hodnota je vytvořena a uložena ve vaší tabulce a je dostupná jako běžný sloupec.

Na to se nyní můžete dotazovat celkem snadno.

Marc



  1. Dynamicky definovat vracející se typy řádků na základě předané dané tabulky v plpgsql?

  2. Rails:Instalace PG drahokamu na OS X – neúspěšné sestavení nativního rozšíření

  3. Jak automatizovat migraci (schéma a data) pro aplikaci PHP/MySQL

  4. Mohu mít LINEFEED jako oddělovač ve funkci CONCAT_WS mySQL