SQL - DIFFERENCE() 函式



SQL Server 的 DIFFERENCE() 函式用於比較兩個字串的 SOUNDEX 值。它接受兩個引數 exp1 和 exp2,並返回一個整數,表示兩個 SOUNDEX 值的匹配程度,範圍從 0 到 4。

Soundex 值是一個四字元程式碼,基於用英語朗讀時字串的發音。其中,0 值表示 SOUNDEX 值之間幾乎沒有相似性,而 4 值表示 SOUNDEX 值非常相似或匹配。

語法

以下是 SQL DIFFERENCE() 函式的語法:

DIFFERENCE(expression, expression)

引數

此方法接受兩個引數,都是字元資料的字母數字表示,可以是常量、變數或列。

返回值

它返回一個整數,用於衡量兩個不同表示式(字串)的 SOUNDEX() 值之間的差異。

示例

以下是一個使用具有相似 SOUNDEX 值的 DIFFERENCE() 函式的示例:

SELECT SOUNDEX('Had') AS soundex_Had, SOUNDEX('Hadi') AS soundex_Hadi, DIFFERENCE('Had', 'Hadi') AS similarity;

輸出

執行上述語句後,將產生以下輸出:

+--------------+-----------------+-------------+
| soundex_Had  |   soundex_Hadi  | similarity  |
+--------------+-----------------+-------------+
|    H300      |    H300         |      4      |
+--------------+-----------------+-------------+ 

示例

以下示例返回差異值為 3,兩個表示式之間的差異最小:

SELECT SOUNDEX('cool') AS soundex_cool, SOUNDEX('pool') AS soundex_pool, 
DIFFERENCE('cool', 'pool') AS similarity;

輸出

執行上述語句後,將產生以下輸出:

+---------------+-----------------+------------+
| soundex_cool  |  soundex_pool   | similarity |
+---------------+-----------------+------------+    
|    C400       |       P400      |     3      |
+---------------+-----------------+------------+

示例

以下示例返回差異值為 2,兩個表示式之間的差異中等:

SELECT SOUNDEX('Jam') AS soundex_Jam, SOUNDEX('kisan') AS soundex_kisan, 
DIFFERENCE('Jam', 'kisan') AS similarity;

輸出

執行上述語句後,將產生以下輸出:

+--------------+-----------------+-------------+
| soundex_Jam  | soundex_kisan   | similarity  |
+--------------+-----------------+-------------+
|    J500      |       k250      |      2      |
+--------------+-----------------+-------------+

示例

以下示例返回差異值為 1,兩個表示式之間的差異較大:

SELECT SOUNDEX('Javascript') AS soundex_Javascript, SOUNDEX('SQL') AS soundex_SQL, 
DIFFERENCE('Javascript', 'SQL') AS similarity;

輸出

執行上述語句後,將產生以下輸出:

+---------------------+-----------------+-------------+
| soundex_Javascript  | soundex_SQL     | similarity  |
+---------------------+-----------------+-------------+
|    J126             |       S400      |      1      |
+---------------------+-----------------+-------------+

示例

以下示例返回差異值為 0,兩個表示式之間的差異最大:

SELECT SOUNDEX('Javascript') AS soundex_Javascript, SOUNDEX('C++') AS soundex_SQL, 
DIFFERENCE('Javascript', 'C++') AS similarity;

輸出

執行上述語句後,將產生以下輸出:

+---------------------+-----------------+-------------+
| soundex_Javascript  | soundex_C++     | similarity  |
+---------------------+-----------------+-------------+
|    J126             |       C000      |      0      |
+---------------------+-----------------+-------------+

示例

現在,讓我們嘗試透過傳遞列名作為引數來使用此函式。首先,假設我們已建立名為 CUSTOMERS 的表,如下所示:

create table CUSTOMERS(
   ID INT NOT NULL, 
   FIRST_NAME VARCHAR(15) NOT NULL, 
   LAST_NAME VARCHAR(15) NOT NULL, 
   AGE INT NOT NULL, 
   ADDRESS CHAR(25), 
   SALARY DECIMAL(10, 4), PRIMARY KEY(ID)
);

現在,讓我們使用 INSERT 語句向其中插入記錄,如下所示:

insert INTO CUSTOMERS VALUES(1, 'Ramesh','Ramesh', 32, 'Ahmedabad', 2000.00);
insert INTO CUSTOMERS VALUES(2, 'Gopal','Rampal', 25, 'Delhi', 1500.00);
insert INTO CUSTOMERS VALUES(3, 'kaushik','Sharma', 23, 'Kota', 2000.00);
insert INTO CUSTOMERS VALUES(4, 'Ravichandran','Ramachandran', 25, 'Chennai', 6500.00);

以下查詢檢索客戶表中名字和姓氏之間的差異:

輸出

+----+------------+--------------+------+
| ID | FIRST_NAME | LAST_NAME    | DIFF |
+----+------------+--------------+------+
|  2 | Ramesh     | Ramesh       |    2 |
|  3 | Khilan     | Rampal            2 |
|  3 | kaushik    | Sharma       |    1 |
|  5 | Chaitali   | Ramachandran |    3 |
+----+------------+--------------+------+
sql-string-functions.htm
廣告