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

Jak działa funkcja SOUNDEX() serwera SQL?

Soundex to algorytm fonetyczny służący do indeksowania nazw według dźwięku wymawianego w języku angielskim. Został opracowany i opatentowany w 1918 i 1922 roku.

Jedną z funkcji dostępnych w SQL Server jest SOUNDEX() funkcja, która zwraca kod Soundex dla podanego ciągu.

Składnia

Składnia wygląda tak:

SOUNDEX ( character_expression )

Gdzie character_expression jest słowem lub ciągiem, dla którego chcesz otrzymać kod Soundex. Może to być stała, zmienna lub kolumna.

SOUNDEX() funkcja jest wrażliwa na sortowanie, a funkcje łańcuchowe mogą być zagnieżdżane.

Kod Soundex

Jak wspomniano, SOUNDEX() funkcja zwraca kod Soundex dla podanego ciągu. Kod Soundex to czteroznakowy kod, który opiera się na brzmieniu ciągu znaków podczas wypowiadania. Oto przykład kodu Soundex:

S600

Oto jak skonstruowany jest kod Soundex:

  • Pierwszy znak kodu to pierwszy znak ciągu zamieniony na wielkie litery. Tak więc w powyższym przykładzie wiemy, że ciąg zaczyna się na literę S (albo małą albo wielką).
  • Drugi do czwartego znak 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ć czteroznakowy kod.

Przykład

Oto przykład pobierania ciągu Soundex z ciągu:

SELECT SOUNDEX('Sure');

Wynik:

S600

Widzimy więc, że słowo Sure ma kod Soundex S600 .

Przykład dwóch pasujących słów

Oto przykład, w którym dwa słowa mają ten sam kod Soundex (ponieważ brzmią tak samo):

SELECT 
    SOUNDEX('Sure') AS Sure, 
    SOUNDEX('Shore') AS Shore;

Wynik:

Sure  Shore
----  -----
S600  S600

Oto kilka przykładów dopasowania ścisłego:

SELECT 
    SOUNDEX('Dam') AS Dam,
    SOUNDEX('Damn') AS Damn,
    SOUNDEX('Too') AS Too,
    SOUNDEX('Two') AS Two;

Wynik:

Dam   Damn  Too   Two 
----  ----  ----  ----
D500  D500  T000  T000

Przykład słów, które nie pasują

Oto przykład, w którym dwa słowa nie brzmią tak samo i dlatego mają różne kody Soundex:

SELECT 
    SOUNDEX('Water') AS Water, 
    SOUNDEX('Coffee') AS Coffee;

Wynik:

Water  Coffee
-----  ------
W360   C100

Słowa z różną pisownią

Niektóre słowa mają różną pisownię w zależności od kraju, z którego pochodzisz. Takie słowa będą miały ten sam kod Soundex:

SELECT 
  SOUNDEX('Flavor') AS 'Flavor',
  SOUNDEX('Flavour') AS 'Flavour';

Wynik:

Flavor  Flavour
------  -------
F416    F416

Ten sam dźwięk, inny kod Soundex

Czasami dwa słowa brzmią tak samo, ale mają różne kody Soundex. Najczęstszym powodem jest to, że zaczynają się od innej litery (jeden używa cichej litery). Jak wspomniano, kod Soundex zaczyna się od pierwszej litery ciągu (przekonwertowanej na wielkie litery). Dlatego jeśli masz dwa słowa, które są wymawiane dokładnie tak samo, ale zaczynają się od innej litery, będą miały inny kod Soundex.

Oto kilka przykładów:

SELECT
    SOUNDEX('Hole') AS 'Hole',
    SOUNDEX('Whole') AS 'Whole',
    SOUNDEX('Our') AS Our,
    SOUNDEX('Hour') AS Hour;

Wynik:

Hole  Whole  Our   Hour
----  -----  ----  ----
H400  W400   O600  H600

Pary w tym przykładzie mają różne kody Soundex tylko dlatego, że ich pierwsza litera jest inna.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 — Pobierz ograniczenia dotyczące tabel

  2. Zrozumienie funkcji GROUPING i GROUPING_ID w programie SQL Server

  3. W jaki sposób warunki sanitarne, które unikają pojedynczych cudzysłowów, mogą zostać pokonane przez wstrzyknięcie SQL w SQL Server?

  4. Jak utworzyć ograniczenie klucza obcego z opcją ON DELETE SET NULL w programie SQL Server — samouczek SQL Server / TSQL, część 81

  5. Czym jest BETWEEN operator logiczny w SQL Server — samouczek SQL Server / TSQL część 124