Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как работи функцията DIFFERENCE() на SQL Server

Тази статия има за цел да ви помогне да разберете DIFFERENCE() функция, която е T-SQL функция, налична в SQL Server, Azure и др.

Ключът към разбирането на DIFFERENCE() функцията е да се разбере как работи Soundex (или в контекста на SQL Server, как SOUNDEX() функцията работи). Това е така, защото DIFFERENCE() функцията връща разликата между стойностите на Soundex между два низа.

Стойността на Soundex е дълга четири знака. Ако две думи звучат еднакво, те ще споделят една и съща стойност на Soundex от четири знака. Ако звучат подобно (но не еднакво), техните Soundex стойности може да споделят някои знаци, но не всички. Например, техните стойности на Soundex може да имат два еднакви знака и два различни. Ако две думи звучат напълно различно, нито един от знаците в съответните им стойности на Soundex няма да е същият.

DIFFERENCE() функцията връща стойност, която варира от 0 чрез 4 . Тази стойност представлява броя на знаците в стойностите на Soundex, които са еднакви. 0 показва слабо или никакво сходство и 4 показва силно сходство или едни и същи стойности.

Синтаксис

Първо, ето синтаксиса:

DIFFERENCE ( character_expression , character_expression )

Както е посочено, тази функция приема два аргумента. Soundex кодовете на всеки символен израз се сравняват и резултатът се връща.

Пример – Точно съвпадение

Ето пример за това какво се случва, когато и двете струни звучат еднакво (т.е. имат една и съща стойност на Soundex):

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

Резултат:

4

Резултатът е 4 , което е най-високата възможна стойност. Това означава, че има голяма прилика между двата низа (доколкото техните стойности на Soundex).

Ако се чудите къде е числото 4 от, вижте следния код:

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

Резултат:

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

В този пример SOUNDEX() функцията се използва за връщане на Soundex кодовете за всяка дума. Както се оказва, и двете думи имат едни и същи Soundex кодове (T000 ). И тъй като всичките четири знака от кодовете на Soundex са еднакви, DIFFERENCE() връща 4 .

Пример – Ниско сходство

Ето пример за това как работи, когато низовете имат по-малко сходство:

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

Резултат:

2

Резултатът е 2 , което е в средата. Струните не звучат съвсем еднакво, но имат някои прилики.

И както в предишния пример, можем да видим откъде идва този резултат, като изпълним следния код:

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

Резултат:

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

Така че можем да видим, че само два от знаците на Soundex са еднакви между тези думи. Следователно DIFFERENCE() резултатът е 2 .

Пример – Няма сходство

Ето пример за това как работи, когато низовете имат слаба или никаква прилика:

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

Резултат:

0

Резултатът е 0 , което означава, че низовете имат много слабо или никакво сходство.

А ето и кодовете на Soundex за тези две думи:

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

Резултат:

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

Така че в този случай нито един от знаците не е еднакъв, следователно DIFFERENCE() резултат от 0 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на SQL Server като хранилище за изображения

  2. Схема на SQL сървър и схема по подразбиране

  3. Динамичен SQL срещу съхранена процедура

  4. SQL:Актуализиране на ред и връщане на стойност на колона с 1 заявка

  5. SQL за намиране на първия нечислов знак в низ