sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan fungerer SQL Server DIFFERENCE()-funktionen

Denne artikel har til formål at hjælpe dig med at forstå DIFFERENCE() funktion, som er en T-SQL-funktion tilgængelig i SQL Server, Azure osv.

Nøglen til at forstå DIFFERENCE() funktion er at forstå, hvordan Soundex fungerer (eller i sammenhæng med SQL Server, hvordan SOUNDEX() funktion virker). Dette skyldes, at DIFFERENCE() funktion returnerer forskellen mellem Soundex-værdierne mellem to strenge.

En Soundex-værdi er fire tegn lang. Hvis to ord lyder ens, vil de dele den samme Soundex-værdi på fire tegn. Hvis de lyder ens (men ikke ens), kan deres Soundex-værdier dele nogle karakterer, men ikke alle. For eksempel kan deres Soundex-værdier have to ens karakterer og to, der er forskellige. Hvis to ord lyder helt forskellige, vil ingen af ​​tegnene i deres respektive Soundex-værdier være ens.

DIFFERENCE() funktion returnerer en værdi, der går fra 0 til 4 . Denne værdi repræsenterer antallet af tegn i Soundex-værdierne, der er de samme. 0 angiver svag eller ingen lighed, og 4 indikerer stærk lighed eller de samme værdier.

Syntaks

Først her er syntaksen:

DIFFERENCE ( character_expression , character_expression )

Som angivet accepterer denne funktion to argumenter. Soundex-koderne for hvert tegnudtryk sammenlignes, og resultatet returneres.

Eksempel – eksakt match

Her er et eksempel på, hvad der sker, når begge strenge lyder ens (dvs. de har samme Soundex-værdi):

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

Resultat:

4

Resultatet er 4 , hvilket er den højest mulige værdi. Dette betyder, at der er en stærk lighed mellem de to strenge (så vidt angår deres Soundex-værdier).

Hvis du undrer dig over, hvor tallet 4 kom fra, skal du tage et kig på følgende kode:

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

Resultat:

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

I dette eksempel er SOUNDEX() funktion bruges til at returnere Soundex-koderne for hvert ord. Som det viser sig, har begge ord de samme Soundex-koder (T000 ). Og fordi alle fire tegn i Soundex-koderne er de samme, DIFFERENCE() returnerer 4 .

Eksempel – Lav lighed

Her er et eksempel på, hvordan det virker, når strengene har en lavere lighed:

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

Resultat:

2

Resultatet er 2 , som er i midten. Strengene lyder ikke helt ens, men de har nogle ligheder.

Og som med det forrige eksempel kan vi se, hvor dette resultat kom fra ved at køre følgende kode:

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

Resultat:

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

Så vi kan se, at kun to af Soundex-karaktererne er ens mellem disse ord. Derfor DIFFERENCE() resultatet er 2 .

Eksempel – Ingen lighed

Her er et eksempel på, hvordan det virker, når strengene har en svag eller ingen lighed:

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

Resultat:

0

Resultatet er 0 , hvilket betyder, at strengene har en meget svag eller ingen lighed.

Og her er Soundex-koderne for disse to ord:

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

Resultat:

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

Så i dette tilfælde er ingen af ​​tegnene ens, derfor en DIFFERENCE() resultat af 0 .


  1. Sådan opretter du et sikkert login-script i PHP og MySQL

  2. Introduktion til auto_explain:Sådan logger du automatisk langsomme Postgres-forespørgselsplaner

  3. Sum kolonner med null-værdier i oracle

  4. Oracle 12c-installationen kunne ikke få adgang til den midlertidige placering