Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak działa funkcja DIFFERENCE() SQL Server

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podzielić ciąg w SQL Server

  2. Jak ustawić domyślną wartość dla istniejącej kolumny?

  3. Jak formatować liczby w SQL Server

  4. Jak naprawić „Konwersja nie powiodła się podczas konwersji wartości na typ danych” w SQL Server

  5. Jak znaleźć najgorzej działające zapytania w SQL Server 2008?