Ten artykuł ma na celu pomóc Ci zrozumieć DIFFERENCE()
funkcja, która jest funkcją T-SQL dostępną w SQL Server, Azure itp.
Klucz do zrozumienia DIFFERENCE()
funkcja polega na zrozumieniu, jak działa Soundex (lub w kontekście SQL Server, jak SOUNDEX()
funkcja działa). Dzieje się tak, ponieważ DIFFERENCE()
funkcja zwraca różnicę między wartościami Soundex między dwoma ciągami.
Wartość Soundex ma długość czterech znaków. Jeśli dwa słowa brzmią tak samo, będą miały tę samą czteroznakową wartość Soundex. Jeśli brzmią podobnie (ale nie tak samo), ich wartości Soundex mogą mieć niektóre znaki, ale nie wszystkie. Na przykład ich wartości Soundex mogą mieć dwa takie same znaki i dwa różne. Jeśli dwa słowa brzmią zupełnie inaczej, żaden ze znaków w ich odpowiednich wartościach Soundex nie będzie taki sam.
DIFFERENCE()
funkcja zwraca wartość z zakresu 0
przez 4
. Ta wartość reprezentuje liczbę znaków w wartości Soundex, które są takie same. 0
wskazuje słabe podobieństwo lub brak podobieństwa, a 4
wskazuje na silne podobieństwo lub te same wartości.
Składnia
Po pierwsze, oto składnia:
DIFFERENCE ( character_expression , character_expression )
Jak wskazano, ta funkcja przyjmuje dwa argumenty. Kody Soundex każdego wyrażenia znakowego są porównywane i zwracany jest wynik.
Przykład — dopasowanie ścisłe
Oto przykład tego, co się dzieje, gdy obie struny brzmią tak samo (tj. mają tę samą wartość Soundex):
SELECT DIFFERENCE('Two','Too');
Wynik:
4
Wynik to 4
, która jest najwyższą możliwą wartością. Oznacza to, że istnieje duże podobieństwo między tymi dwoma strunami (jeśli chodzi o ich wartości Soundex).
Jeśli zastanawiasz się, gdzie jest liczba 4
z którego pochodzi, spójrz na następujący kod:
SELECT SOUNDEX('Two') AS Two, SOUNDEX('Too') AS Too;
Wynik:
Two Too ---- ---- T000 T000
W tym przykładzie SOUNDEX()
funkcja służy do zwracania kodów Soundex dla każdego słowa. Jak się okazuje, oba słowa mają te same kody Soundex (T000
). A ponieważ wszystkie cztery znaki kodów Soundex są takie same, DIFFERENCE()
zwraca 4
.
Przykład – niskie podobieństwo
Oto przykład tego, jak to działa, gdy ciągi mają mniejsze podobieństwo:
SELECT DIFFERENCE('Tea','Coffee');
Wynik:
2
Wynik to 2
, który znajduje się pośrodku. Struny nie brzmią dokładnie tak samo, ale mają pewne podobieństwa.
Podobnie jak w poprzednim przykładzie, możemy zobaczyć, skąd pochodzi ten wynik, uruchamiając następujący kod:
SELECT SOUNDEX('Tea') AS Tea, SOUNDEX('Coffee') AS Coffee;
Wynik:
Tea Coffee ---- ------ T000 C100
Widzimy więc, że tylko dwa znaki Soundex są takie same między tymi słowami. Dlatego DIFFERENCE()
wynik to 2
.
Przykład – brak podobieństwa
Oto przykład tego, jak to działa, gdy ciągi mają słabe lub żadne podobieństwo:
SELECT DIFFERENCE('Tree','Captivated');
Wynik:
0
Wynik to 0
, co oznacza, że ciągi znaków są bardzo słabe lub nie mają żadnego podobieństwa.
A oto kody Soundex dla tych dwóch słów:
SELECT SOUNDEX('Tree') AS Tree, SOUNDEX('Captivated') AS Captivated;
Wynik:
Tree Captivated ---- ---------- T600 C131
Więc w tym przypadku żaden ze znaków nie jest taki sam, stąd DIFFERENCE()
wynik 0
.