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
广告
© . All rights reserved.