Sdílet prostřednictvím


SOUNDEX (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform Platform System (PDW)koncový bod SQL Analytics ve službě Microsoft FabricWarehouse v Microsoft Fabric

Vrátí čtyřznakový kód (SOUNDEX), který vyhodnotí podobnost dvou řetězců.

Transact-SQL konvence syntaxe

Syntax

SOUNDEX ( character_expression )

Argumenty

character_expression

Alfanumerický výraz znakových dat. character_expression může být konstanta, proměnná nebo sloupec.

Návratové typy

varchar

Poznámky

SOUNDEX převede alfanumerický řetězec na čtyřznakový kód, který je založený na tom, jak řetězec zní při mluvené angličtině. První znak kódu je první znak character_expression, převeden na velká písmena. Druhým až čtvrtým znakem kódu jsou čísla, která představují písmena ve výrazu. Písmena A, E, I, O, U, H, Wa Y se ignorují, pokud nejsou prvním písmenem řetězce. Nuly se přidají na konec v případě potřeby k vytvoření čtyřznakového kódu. Další informace o SOUNDEX kódu naleznete v tématu Systém indexování Soundex.

SOUNDEX kódy z různých řetězců lze porovnat, abyste viděli, jak podobné řetězce zní při mluvené řeči. Funkce DIFFERENCE() provede SOUNDEX na dvou řetězcích a vrátí celé číslo, které představuje, jak podobné kódy SOUNDEX jsou pro tyto řetězce.

SOUNDEX je kolace citlivá. Řetězcové funkce je možné vnořit.

Kompatibilita SOUNDEX

V předchozích verzích SQL Serveru použila funkce SOUNDEX podmnožinu pravidel SOUNDEX. V rámci úrovně kompatibility databáze 110 nebo vyšší použije SQL Server kompletní sadu pravidel.

Po upgradu na úroveň kompatibility 110 nebo vyšší možná budete muset znovu sestavit indexy, haldy nebo CHECK omezení, která používají funkci SOUNDEX.

  • Haldu, která obsahuje trvalý počítaný sloupec definovaný s SOUNDEX nelze dotazovat, dokud haldu znovu nevystavíte spuštěním následujícího příkazu:

    ALTER TABLE <table> REBUILD;
    
  • CHECK omezení definovaná pomocí SOUNDEX jsou při upgradu zakázaná. Pokud chcete omezení povolit, spusťte následující příkaz:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • Indexy (včetně indexovaných zobrazení), které obsahují trvalý počítaný sloupec definovaný pomocí SOUNDEX nelze dotazovat, dokud index znovu nevystavíte spuštěním následujícího příkazu:

    ALTER INDEX ALL ON <object> REBUILD;
    

Příklady

A. Použití FUNKCE SOUNDEX

Následující příklad ukazuje funkci SOUNDEX a související DIFFERENCE funkci. V prvním příkladu se pro všechny souhlásky vrátí standardní SOUNDEX hodnoty. Vrácení SOUNDEX pro Smith a Smythe vrátí stejný SOUNDEX výsledek, protože nejsou zahrnuty všechny samohlásky, písmeno y, dvojitá písmena a písmeno h.

SELECT SOUNDEX('Smith'),
       SOUNDEX('Smythe');

Tady je sada výsledků. Platné pro kolaci Latin1_General.

S530  S530

B. Použití rozdílu

Funkce DIFFERENCE porovnává rozdíl výsledků vzorů SOUNDEX. Následující příklad ukazuje dva řetězce, které se liší pouze ve samohláskách. Vrácený rozdíl je 4, nejnižší možný rozdíl.

SELECT DIFFERENCE('Smithers', 'Smythers');
GO

Tady je sada výsledků. Platné pro kolaci Latin1_General.

4

V následujícím příkladu se řetězce liší v souhláskách; proto je vrácen rozdíl 2, větší rozdíl.

SELECT DIFFERENCE('Anothers', 'Brothers');
GO

Tady je sada výsledků. Platné pro kolaci Latin1_General.

2
  • ROZDÍL (Transact-SQL)
  • řetězcové funkce (Transact-SQL)
  • úrovně kompatibility ALTER DATABASE (Transact-SQL)