sql >> Databasteknik >  >> RDS >> Sqlserver

Hur SQL Server DIFFERENCE()-funktionen fungerar

Den här artikeln syftar till att hjälpa dig förstå DIFFERENCE() funktion, som är en T-SQL-funktion tillgänglig i SQL Server, Azure, etc.

Nyckeln till att förstå DIFFERENCE() Funktionen är att förstå hur Soundex fungerar (eller i sammanhanget med SQL Server, hur SOUNDEX() funktionen fungerar). Detta beror på att DIFFERENCE() funktion returnerar skillnaden mellan Soundex-värdena mellan två strängar.

Ett Soundex-värde är fyra tecken långt. Om två ord låter lika, kommer de att dela samma fyra tecken Soundex-värde. Om de låter lika (men inte lika), kan deras Soundex-värden dela vissa karaktärer men inte alla. Till exempel kan deras Soundex-värden ha två tecken som är lika och två som är olika. Om två ord låter helt olika kommer ingen av tecknen i deras respektive Soundex-värden att vara densamma.

DIFFERENCE() funktion returnerar ett värde som sträcker sig från 0 till 4 . Detta värde representerar antalet tecken i Soundex-värdena som är desamma. 0 indikerar svag eller ingen likhet, och 4 indikerar stark likhet eller samma värden.

Syntax

Först, här är syntaxen:

DIFFERENCE ( character_expression , character_expression )

Som nämnts accepterar denna funktion två argument. Soundex-koderna för varje teckenuttryck jämförs och resultatet returneras.

Exempel – Exakt matchning

Här är ett exempel på vad som händer när båda strängarna låter likadana (dvs de har samma Soundex-värde):

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

Resultat:

4

Resultatet är 4 , vilket är högsta möjliga värde. Detta betyder att det finns en stark likhet mellan de två strängarna (så långt som deras Soundex-värden går).

Om du undrar var numret 4 kom ifrån, ta en titt på följande kod:

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

Resultat:

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

I det här exemplet SOUNDEX() funktion används för att returnera Soundex-koderna för varje ord. Som det visar sig har båda orden samma Soundex-koder (T000 ). Och eftersom alla fyra tecknen i Soundex-koderna är samma, DIFFERENCE() returnerar 4 .

Exempel – Låg likhet

Här är ett exempel på hur det fungerar när strängarna har en lägre likhet:

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

Resultat:

2

Resultatet är 2 , som är i mitten. Strängarna låter inte exakt likadana, men de har vissa likheter.

Och som med föregående exempel kan vi se var detta resultat kom ifrån genom att köra följande kod:

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

Resultat:

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

Så vi kan se att endast två av Soundex-karaktärerna är lika mellan dessa ord. Därför DIFFERENCE() resultatet är 2 .

Exempel – Ingen likhet

Här är ett exempel på hur det fungerar när strängarna har en svag eller ingen likhet:

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

Resultat:

0

Resultatet är 0 , vilket betyder att strängarna har en mycket svag eller ingen likhet.

Och här är Soundex-koderna för dessa två ord:

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

Resultat:

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

Så i det här fallet är inget av tecknen detsamma, därav en DIFFERENCE() resultat av 0 .


  1. Uppdaterar JLabel via SetIcon från bytea-datatyp i postgres

  2. Använder Dapper med Oracle lagrade procedurer som returnerar markörer

  3. Vad är standardstorleken för en varchar2-ingång till Oracles lagrade procedur, och kan den ändras?

  4. MySQL väljer 10 slumpmässiga rader från 600 000 rader snabbt