首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL -如何通过查询查找列中的字符串是否包含子字符串

MySQL -如何通过查询查找列中的字符串是否包含子字符串
EN

Stack Overflow用户
提问于 2021-04-28 06:07:57
回答 1查看 1.7K关注 0票数 0

我是MySQL的初学者,我试图编写一个查询,通过if语句查找一个字符串是否包含列中的子字符串,

例如,我在表中有一个带有字符串值的列

这是字符串的一个例子

通过查询,将尝试检查“--这是字符串的示例”是否包含--这是--然后它可能返回yes/1no/0,因为不包含--这是

  • --我尝试使用以下查询:

从表中选择位置(“这是”在column1中)作为结果;

但我不知道如何在MySQL查询中使用if语句编写

有人能帮我吗?请让我知道这是否正确的方式和可能通过MySQL查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-28 06:33:10

您的查询是正确的,除非必须使用逗号而不是IN关键字。

代码语言:javascript
运行
复制
SELECT POSITION('this is', column1) AS result FROM table;

另外,您可以使用的不是POSITION,而是LOCATE函数(它们是注释中提到的别名)。

代码语言:javascript
运行
复制
SELECT LOCATE('this is', column1) AS result FROM table;

或INSTR()函数(在本例中,您必须使用sswap操作数)

代码语言:javascript
运行
复制
SELECT INSTR(column1, 'this is') AS result FROM table;

如果找到子字符串,所有查询都返回正整数;如果没有找到子字符串,则返回零0;如果任何操作数为空,则返回NULL。

如果您只想返回1/0输出,那么必须检查获得了哪些变体,并将其转换为所需的值。例如,

代码语言:javascript
运行
复制
SELECT CASE WHEN LOCATE('this is', column1)
            THEN 1
            ELSE 0
            END AS result FROM table;

当找到子字符串时,LOCATE('this is', column1)被视为真返回1,否则为FALSE返回0。

注意--如果您使用区分大小写的排序规则,那么'this is'子字符串将在'This is an example of String'值中找到而不是

如果您需要应用不区分大小写的搜索,那么可以显式地指定不区分大小写的排序规则,或者应用一个函数将所有符号转换为小写或大写(当然,在这种情况下不需要文字,它们可以在需要的情况下打印)。例如,

代码语言:javascript
运行
复制
SELECT LOCATE('this is', LOWER(column1)) AS result FROM table;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67294594

复制
相关文章

相似问题

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