mysql查询字段相似度
时间: 2023-08-19 14:14:28 浏览: 564
mysql 计算字符串相似度
5星 · 资源好评率100%
在MySQL中,要查询字段的相似度,可以使用自定义函数来计算两个字符串的相似度。可以使用以下代码创建一个名为`sfn_GetSimilar_Rate`的函数:
```sql
DELIMITER $$
CREATE DEFINER = CURRENT_USER FUNCTION `sfn_GetSimilar_Rate`(s1 VARCHAR(64),s2 VARCHAR(64)) RETURNS float
BEGIN
declare l1 int default 0;
declare l2 int default 0;
declare i int default 0;
declare _ss varchar(2) ;
declare j int default 0;
declare sum int default 0;
set l1=CHAR_LENGTH(s1);
set l2=CHAR_LENGTH(S2);
IF l1=0 THEN
RETURN 0;
END IF;
IF l2=0 THEN
RETURN 0;
END IF;
SET i=0;
set sum=0;
myloop1:LOOP
SET i=i+1;
IF i>l1 THEN
LEAVE myloop1;
end if;
SET _ss=substr(s1,i,1);
SET j=0;
myloop2:LOOP
set j=j+1;
if j>l2 then
LEAVE myloop2;
end if;
if _ss=substr(s2,j,1) then
set sum=sum+1;
end if;
END LOOP myloop2;
END LOOP myloop1;
RETURN sum/l2;
END
```
然后,你可以在查询语句中使用这个函数来计算字段的相似度。例如,如果你有一个名为`tableName`的表,其中有一个名为`sheetName`的字段,你可以使用以下查询语句来按相似度降序排序:
```sql
SELECT sheetName FROM tableName ORDER BY sfn_GetSimilar_Rate(sheetName, '你要比较的字符串') DESC
```
这样就可以根据字段的相似度进行查询了。请注意,这个函数目前支持64个字符,如果需要更大的字符,请自行更改函数中的代码。
#### 引用[.reference_title]
- *1* *2* [Mysql模糊查询,按相似度排序](https://blog.csdn.net/yetaodiao/article/details/127369561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Mysql 计算两个中文字符串的相似度](https://blog.csdn.net/qq_36701692/article/details/120546943)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文