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 .