Dit artikel is bedoeld om u te helpen het DIFFERENCE()
. te begrijpen functie, een T-SQL-functie die beschikbaar is in SQL Server, Azure, enz.
De sleutel tot het begrijpen van het DIFFERENCE()
functie is om te begrijpen hoe Soundex werkt (of in de context van SQL Server, hoe de SOUNDEX()
functie werkt). Dit komt omdat de DIFFERENCE()
functie retourneert het verschil tussen de Soundex-waarden tussen twee strings.
Een Soundex-waarde is vier tekens lang. Als twee woorden hetzelfde klinken, hebben ze dezelfde Soundex-waarde van vier tekens. Als ze hetzelfde klinken (maar niet hetzelfde), kunnen hun Soundex-waarden sommige karakters delen, maar niet alle. Hun Soundex-waarden kunnen bijvoorbeeld twee dezelfde tekens hebben en twee verschillende. Als twee woorden totaal verschillend klinken, zal geen van de karakters in hun respectievelijke Soundex-waarden hetzelfde zijn.
De DIFFERENCE()
functie retourneert een waarde die varieert van 0
via 4
. Deze waarde vertegenwoordigt het aantal tekens in de Soundex-waarden dat hetzelfde is. 0
geeft een zwakke of geen overeenkomst aan, en 4
geeft sterke overeenkomst of dezelfde waarden aan.
Syntaxis
Ten eerste, hier is de syntaxis:
DIFFERENCE ( character_expression , character_expression )
Zoals aangegeven accepteert deze functie twee argumenten. De Soundex-codes van elke tekenuitdrukking worden vergeleken en het resultaat wordt geretourneerd.
Voorbeeld – Exacte overeenkomst
Hier is een voorbeeld van wat er gebeurt als beide snaren hetzelfde klinken (d.w.z. ze hebben dezelfde Soundex-waarde):
SELECT DIFFERENCE('Two','Too');
Resultaat:
4
Het resultaat is 4
, wat de hoogst mogelijke waarde is. Dit betekent dat er een sterke overeenkomst is tussen de twee snaren (voor zover hun Soundex-waarden gaan).
Als je je afvraagt waar het nummer 4
vandaan komt, kijk eens naar de volgende code:
SELECT SOUNDEX('Two') AS Two, SOUNDEX('Too') AS Too;
Resultaat:
Two Too ---- ---- T000 T000
In dit voorbeeld is de SOUNDEX()
functie wordt gebruikt om de Soundex-codes voor elk woord te retourneren. Het blijkt dat beide woorden dezelfde Soundex-codes hebben (T000
). En omdat alle vier de karakters van de Soundex-codes hetzelfde zijn, DIFFERENCE()
retourneert 4
.
Voorbeeld – Lage gelijkenis
Hier is een voorbeeld van hoe het werkt als de snaren een lagere overeenkomst hebben:
SELECT DIFFERENCE('Tea','Coffee');
Resultaat:
2
Het resultaat is 2
, die zich in het midden bevindt. De snaren klinken niet precies hetzelfde, maar ze hebben wel wat overeenkomsten.
En net als bij het vorige voorbeeld kunnen we zien waar dit resultaat vandaan komt door de volgende code uit te voeren:
SELECT SOUNDEX('Tea') AS Tea, SOUNDEX('Coffee') AS Coffee;
Resultaat:
Tea Coffee ---- ------ T000 C100
We kunnen dus zien dat slechts twee van de Soundex-tekens hetzelfde zijn tussen deze woorden. Daarom is de DIFFERENCE()
resultaat is 2
.
Voorbeeld – Geen gelijkenis
Hier is een voorbeeld van hoe het werkt als de snaren een zwakke of geen overeenkomst hebben:
SELECT DIFFERENCE('Tree','Captivated');
Resultaat:
0
Het resultaat is 0
, wat betekent dat de snaren erg zwak of helemaal niet op elkaar lijken.
En hier zijn de Soundex-codes voor deze twee woorden:
SELECT SOUNDEX('Tree') AS Tree, SOUNDEX('Captivated') AS Captivated;
Resultaat:
Tree Captivated ---- ---------- T600 C131
Dus in dit geval is geen van de karakters hetzelfde, vandaar een DIFFERENCE()
resultaat van 0
.