gpt4 book ai didi

mysql - 带有拼写错误的 sql 查询

转载 作者:可可西里 更新时间:2023-11-01 08:39:47 26 4
gpt4 key购买 nike

我有这张公司表:

TABLE company
+----+----------------+--------+--------+
| id | name | rating | enable |
+----+----------------+--------+--------+
| 1 | Spirit company | 3.5 | 1 |
| 2 | Test | 2 | 1 |
| 3 | Hello world | 4 | 1 |
+----+----------------+--------+--------+

当用户进行研究时,将进行此查询(以 search=spirit company 为例):

SELECT `company`.*,
1+IF(`name` REGEXP 'sp[iíìîï]r[iíìîï]t[ -][cç][oóòôöõø]mp[aáàâäåã][nñ][yýÿ]',10,
IF(`company`.`name` REGEXP '(sp[iíìîï]r[iíìîï]t)|([cç][oóòôöõø]mp[aáàâäåã][nñ][yýÿ])',5,0)
) as `ratio`
FROM `company`
WHERE `company`.`enable`=1
ORDER BY`ratio` DESC, `company`.`rating` DESC

一切正常!现在,如果用户输入错误,是否可以给出中间结果?

示例:用户搜索“spitit company”,我想将比率增加 +3,因为只有一个字母不同。

最佳答案

太棒了@neurotic-d

所以这里是新的查询:

SELECT `company`.*,
1+IF(`name` REGEXP 'sp[iíìîï]r[iíìîï]t[ -][cç][oóòôöõø]mp[aáàâäåã][nñ][yýÿ]',10,
IF(levenshtein(`company`.`name`, 'spirit company')<3,8,
IF(`company`.`name` REGEXP '(sp[iíìîï]r[iíìîï]t)|([cç][oóòôöõø]mp[aáàâäåã][nñ][yýÿ])',5,
IF(levenshtein(`company`.`name`, 'spirit')<LENGTH(`company`.`name`)-LENGTH('spirit')+1,3,
IF(levenshtein(`company`.`name`, 'company')<LENGTH(`company`.`name`)-LENGTH('company')+1,3,
0))))) as `ratio`
FROM `company`
WHERE `company`.`enable`=1
ORDER BY`ratio` DESC, `company`.`rating` DESC

非常感谢!

关于mysql - 带有拼写错误的 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37652876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com