Udostępnij za pośrednictwem


SOUNDEX (Transact-SQL)

Dotyczy:programu SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)punkt końcowy analizy SQL w usłudze Microsoft FabricWarehouse w usłudze Microsoft Fabric

Zwraca czteroznakowy kod (SOUNDEX), aby ocenić podobieństwo dwóch ciągów.

Transact-SQL konwencje składni

Składnia

SOUNDEX ( character_expression )

Argumenty

character_expression

Alfanumeryczne wyrażenie danych znaków. character_expression może być stałą, zmienną lub kolumną.

Typy zwracane

varchar

Uwagi

SOUNDEX konwertuje ciąg alfanumeryczny na czteroznakowy kod oparty na tym, jak ciąg brzmi w języku angielskim. Pierwszym znakiem kodu jest pierwszy znak character_expression, przekonwertowany na wielkie litery. Drugie do czwartego znaku kodu to cyfry reprezentujące litery w wyrażeniu. Litery A, E, I, O, U, H, Wi Y są ignorowane, chyba że są pierwszą literą ciągu. Zera są dodawane na końcu, jeśli to konieczne, aby utworzyć czteroznaczny kod. Aby uzyskać więcej informacji na temat kodu SOUNDEX, zobacz Soundex Indexing System.

SOUNDEX kody z różnych ciągów można porównać, aby zobaczyć, jak podobny jest dźwięk ciągów podczas wypowiedzi. Funkcja DIFFERENCE() wykonuje SOUNDEX na dwóch ciągach i zwraca liczbę całkowitą reprezentującą, jak podobne są kody SOUNDEX dla tych ciągów.

SOUNDEX jest rozróżniana sortowanie. Funkcje ciągów można zagnieżdżać.

Zgodność z funkcją SOUNDEX

W poprzednich wersjach programu SQL Server funkcja SOUNDEX zastosowała podzbiór reguł SOUNDEX. W obszarze zgodność bazy danych poziom 110 lub wyższy program SQL Server stosuje bardziej kompletny zestaw reguł.

Po uaktualnieniu do poziomu zgodności 110 lub nowszego może być konieczne ponowne skompilowanie indeksów, stert lub CHECK ograniczeń korzystających z funkcji SOUNDEX.

  • Sterta zawierająca utrwałą obliczoną kolumnę zdefiniowaną za pomocą SOUNDEX nie można wykonywać zapytań, dopóki sterta nie zostanie skompilowana, uruchamiając następującą instrukcję:

    ALTER TABLE <table> REBUILD;
    
  • CHECK ograniczenia zdefiniowane za pomocą SOUNDEX są wyłączone po uaktualnieniu. Aby włączyć ograniczenie, uruchom następującą instrukcję:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • Indeksy (w tym widoki indeksowane), które zawierają utrwalone obliczone kolumny zdefiniowane za pomocą SOUNDEX nie można wykonywać zapytań, dopóki indeks nie zostanie skompilowany, uruchamiając następującą instrukcję:

    ALTER INDEX ALL ON <object> REBUILD;
    

Przykłady

A. Korzystanie z funkcji SOUNDEX

W poniższym przykładzie przedstawiono funkcję SOUNDEX i powiązaną funkcję DIFFERENCE. W pierwszym przykładzie standardowe wartości SOUNDEX są zwracane dla wszystkich spółgłosek. Zwracanie SOUNDEX dla Smith i Smythe zwraca ten sam wynik SOUNDEX, ponieważ wszystkie śluby, litera y, podwójne litery i litera hnie są uwzględniane.

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

Oto zestaw wyników. Prawidłowe sortowanie Latin1_General.

S530  S530

B. Użyj RÓŻNICY

Funkcja DIFFERENCE porównuje różnicę wyników wzorca SOUNDEX. W poniższym przykładzie przedstawiono dwa ciągi, które różnią się tylko w przypadku ślubów. Zwracana różnica jest 4, najniższą możliwą różnicą.

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

Oto zestaw wyników. Prawidłowe sortowanie Latin1_General.

4

W poniższym przykładzie ciągi różnią się spółgłoskami; dlatego zwracana różnica jest 2, tym większa różnica.

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

Oto zestaw wyników. Prawidłowe sortowanie Latin1_General.

2