如何查询包含多个字母的字符串?

eci*_*irp 3 mysql string

如何在MySQL中运行查询以搜索包含多个字符的字符串?

SELECT * FROM animals WHERE name LIKE '%r%' 只返回包含'r'的动物..

+---------+------------+
|    id   | name       |
+---------+------------+
|     1   | zebra      |
|     14  | raccoon    |
|     25  | parrot     | 
|     49  | rhinoceros |
+---------+------------+
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM animals WHERE name LIKE '%rr%' 只返回含有'rr'的动物.

+---------+------------+
|    id   | name       |
+---------+------------+
|     25  | parrot     | 
+---------+------------+
Run Code Online (Sandbox Code Playgroud)

我想找到任何包含'r'的动物名称..让我们在名字的任何地方说两次.

+---------+------------+
|    id   | name       |
+---------+------------+
|     25  | parrot     | 
|     49  | rhinoceros |
+---------+------------+
Run Code Online (Sandbox Code Playgroud)

任何人?

Gor*_*off 11

你试过这个吗?

select *
from animals
where name like '%r%r%'
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是使用长度并替换:

select *
from animals
where length(name) - length(replace(name, 'r', '')) >= 2;
Run Code Online (Sandbox Code Playgroud)

如果你正在寻找一组字母的出现,例如' 'r''s' ,这可能是有利的:

select *
from animals
where length(name) - length(replace(replace(name, 'r', ''), 's', '')) >= 2;
Run Code Online (Sandbox Code Playgroud)

编辑:

如果你想正是两个"R" S,你可以只使用在平等的where条款:

select *
from animals
where length(name) - length(replace(name, 'r', '')) = 2;
Run Code Online (Sandbox Code Playgroud)