SOUNDEX (Transact-SQL)
Dotyczy:programu SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
punkt końcowy analizy SQL w usłudze Microsoft Fabric
Warehouse 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
, W
i 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 h
nie 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