首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查询多次包含一个字母的字符串?

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

Stack Overflow用户
提问于 2013-06-24 04:16:47
回答 2查看 12.8K关注 0票数 5

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

SELECT * FROM animals WHERE name LIKE '%r%'将只返回包含‘r’的动物。

代码语言:javascript
复制
+---------+------------+
|    id   | name       |
+---------+------------+
|     1   | zebra      |
|     14  | raccoon    |
|     25  | parrot     | 
|     49  | rhinoceros |
+---------+------------+

SELECT * FROM animals WHERE name LIKE '%rr%'将只返回包含“rr”实例的动物..

代码语言:javascript
复制
+---------+------------+
|    id   | name       |
+---------+------------+
|     25  | parrot     | 
+---------+------------+

我想找出任何包含“r”的动物名字..让我们在名字中的任何地方说两次。

代码语言:javascript
复制
+---------+------------+
|    id   | name       |
+---------+------------+
|     25  | parrot     | 
|     49  | rhinoceros |
+---------+------------+

有没有人?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-24 04:18:28

你试过这个吗?

代码语言:javascript
复制
select *
from animals
where name like '%r%r%'

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

代码语言:javascript
复制
select *
from animals
where length(name) - length(replace(name, 'r', '')) >= 2;

如果您正在查找一组字母的匹配项,例如'r''s‘,这将非常有用:

代码语言:javascript
复制
select *
from animals
where length(name) - length(replace(replace(name, 'r', ''), 's', '')) >= 2;

编辑:

如果你只想要两个“r”,你可以在where子句中使用相等:

代码语言:javascript
复制
select *
from animals
where length(name) - length(replace(name, 'r', '')) = 2;
票数 15
EN

Stack Overflow用户

发布于 2013-06-24 04:19:55

您可以通过检查当您删除这些字符时字符串的长度有多大变化来间接地执行此操作:

代码语言:javascript
复制
SELECT id, name
FROM yourtable
WHERE (length(name) - length(replace(name, 'r', ''))) >= 2

例如,parrot有6个字符,删除r后,只有4个字符,因此6-4=2,将匹配where。

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

https://stackoverflow.com/questions/17264899

复制
相关文章

相似问题

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