假设有一个表user如下所示:
+----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | char(64) | NO | | NULL | |
| img_hash | varchar(32) | NO | | | |
+----------+------------------+------+-----+---------+----------------+我想对字段名进行模糊匹配,列表中有多个名称待定匹配,如下所示:
["name1", "name2", "name3", ...]
我是想说:
select
id, name, img_hash
from
user
where name like "%name1%"
or name like "%name2%"
or name like "%name3%"
...在这个问题上是否有更好的方法来做模糊匹配工作?
谢谢。
发布于 2020-02-28 06:37:21
发布于 2020-02-28 06:42:46
Levenstein距离 -转换到另一个所需的更改数。
Soundex() - SOUNDEX函数将短语转换为四个字符的代码.第一个字符是短语的第一个字母。省略元音,除非短语的第一个字母是元音,其他三个字符代表短语的其余部分。
差() -评估两个表达式,并分配一个介于0到4之间的值,其中0几乎没有相似之处,4表示相同或非常相似的短语。此值是根据每个短语中相同词组中的字符数得出的。
https://stackoverflow.com/questions/60446336
复制相似问题