sql >> Database >  >> RDS >> Sqlserver

Hoe de SQL Server DIFFERENCE()-functie werkt

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 .


  1. PGTune-alternatieven - ClusterControl PostgreSQL-configuratie

  2. MySQL:hoe beveilig je op rijniveau (zoals Oracle's Virtual Private Database)?

  3. Hoe dubbele records te vinden met behulp van Group by and Having-clausule in SQL Server - SQL Server / TSQL-zelfstudie, deel 132

  4. Hoe opeenvolgende rijen te vinden op basis van de waarde van een kolom?