首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MYSQL中是否有更好的方法用于多个值?

问在MYSQL中是否有更好的方法用于多个值?
EN

Stack Overflow用户
提问于 2020-02-28 06:24:31
回答 2查看 54关注 0票数 0

假设有一个表user如下所示:

代码语言:javascript
复制
+----------+------------------+------+-----+---------+----------------+
| 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", ...]

我是想说:

代码语言:javascript
复制
select 
    id, name, img_hash 
from
    user
where name like "%name1%" 
or name like "%name2%"
or name like "%name3%"
...

在这个问题上是否有更好的方法来做模糊匹配工作?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-28 06:37:21

你可以试试REGEXP

代码语言:javascript
复制
SELECT ID, NAME, IMG_HASH FROM USER 
WHERE NAME REGEXP 'name1|name2|name3'

更简单的版本如下所示。您可以在CONCAT_WS中直接复制粘贴名称

代码语言:javascript
复制
SELECT ID, NAME, IMG_HASH FROM USER 
WHERE NAME REGEXP CONCAT_WS("|","name1", "name2","name3");

检查这里的演示

请注意,这可能比使用LIKE慢

票数 2
EN

Stack Overflow用户

发布于 2020-02-28 06:42:46

Levenstein距离 -转换到另一个所需的更改数。

Soundex() - SOUNDEX函数将短语转换为四个字符的代码.第一个字符是短语的第一个字母。省略元音,除非短语的第一个字母是元音,其他三个字符代表短语的其余部分。

差() -评估两个表达式,并分配一个介于0到4之间的值,其中0几乎没有相似之处,4表示相同或非常相似的短语。此值是根据每个短语中相同词组中的字符数得出的。

比较

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60446336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档