sql >> Databáze >  >> RDS >> Sqlserver

Jak funguje funkce SQL Server DIFFERENCE().

Cílem tohoto článku je pomoci vám porozumět DIFFERENCE() funkce, což je funkce T-SQL dostupná v SQL Server, Azure atd.

Klíč k pochopení DIFFERENCE() funkcí je pochopit, jak funguje Soundex (nebo v kontextu SQL Server, jak SOUNDEX() funkce funguje). Důvodem je DIFFERENCE() Funkce vrací rozdíl mezi hodnotami Soundex mezi dvěma řetězci.

Hodnota Soundex má čtyři znaky. Pokud dvě slova znějí stejně, budou mít stejnou čtyřznakovou hodnotu Soundex. Pokud znějí podobně (ale ne stejně), jejich hodnoty Soundex mohou sdílet některé znaky, ale ne všechny. Například jejich hodnoty Soundex mohou mít dva stejné znaky a dva odlišné. Pokud dvě slova znějí zcela odlišně, žádný ze znaků v příslušných hodnotách Soundex nebude stejný.

DIFFERENCE() funkce vrací hodnotu v rozsahu od 04 . Tato hodnota představuje počet znaků v hodnotách Soundex, které jsou stejné. 0 označuje slabou nebo žádnou podobnost a 4 označuje silnou podobnost nebo stejné hodnoty.

Syntaxe

Nejprve je zde syntaxe:

DIFFERENCE ( character_expression , character_expression )

Jak je uvedeno, tato funkce přijímá dva argumenty. Soundex kódy každého znakového výrazu jsou porovnány a výsledek je vrácen.

Příklad – Přesná shoda

Zde je příklad toho, co se stane, když obě struny znějí stejně (tj. mají stejnou hodnotu Soundex):

SELECT DIFFERENCE('Two','Too');

Výsledek:

4

Výsledek je 4 , což je nejvyšší možná hodnota. To znamená, že mezi těmito dvěma řetězci existuje silná podobnost (pokud jde o jejich hodnoty Soundex).

Pokud vás zajímá, kde je číslo 4 pochází z, podívejte se na následující kód:

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

Výsledek:

Two   Too 
----  ----
T000  T000

V tomto příkladu SOUNDEX() Funkce se používá k vrácení kódů Soundex pro každé slovo. Jak se ukázalo, obě slova mají stejné kódy Soundex (T000 ). A protože všechny čtyři znaky kódů Soundex jsou stejné, DIFFERENCE() vrátí 4 .

Příklad – Nízká podobnost

Zde je příklad toho, jak to funguje, když mají řetězce nižší podobnost:

SELECT DIFFERENCE('Tea','Coffee');

Výsledek:

2

Výsledek je 2 , který je uprostřed. Struny nezní úplně stejně, ale mají určité podobnosti.

A stejně jako v předchozím příkladu můžeme zjistit, odkud tento výsledek pochází spuštěním následujícího kódu:

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

Výsledek:

Tea   Coffee
----  ------
T000  C100

Můžeme tedy vidět, že pouze dva znaky Soundex jsou mezi těmito slovy stejné. Proto DIFFERENCE() výsledek je 2 .

Příklad – žádná podobnost

Zde je příklad toho, jak to funguje, když mají řetězce slabou nebo žádnou podobnost:

SELECT DIFFERENCE('Tree','Captivated');

Výsledek:

0

Výsledek je 0 , což znamená, že řetězce mají velmi slabou nebo žádnou podobnost.

A zde jsou kódy Soundex pro tato dvě slova:

SELECT 
    SOUNDEX('Tree') AS Tree,
    SOUNDEX('Captivated') AS Captivated;

Výsledek:

Tree  Captivated
----  ----------
T600  C131

V tomto případě tedy žádný ze znaků není stejný, proto DIFFERENCE() výsledek 0 .


  1. Zkontrolujte, zda v poli Postgres existuje hodnota

  2. Je možné provést cizí klíč MySQL do jedné ze dvou možných tabulek?

  3. MySQLi count(*) vždy vrátí 1

  4. Použití JShell v Javě 9 v NetBeans 9.0, část 3