ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql 判断是否包含某字符串的3种方式

2022-02-06 19:31:30  阅读:711  来源: 互联网

标签:like 包含 ORGNAME substr str mysql 字符串 select


1.情景展示

在MySQL中,如何判断某字段是否包含指定字符串?

2.使用关键字:like

like也就是模糊查询,实现对字符串的某种特征信息的模糊查找。它其实依赖于以下2个特殊的"符号":

%:它代表任意个数的任意字符

_:它代表任意一个字符

使用方式,通常有6种变形;

变形一:like '字符串'+ '%'

相当于java当中的startwith()地方,表示的含义是:以指定字符串开头;

变形二:like + '%' + '字符串'

相当于java当中的endwith()地方,表示的含义是:以指定字符串结尾;

变形三:like + '%' + '字符串'+ '%'

变形四:like + '_' + '字符串'

变形五:like + '字符串' + '_'

变形六:like + '_' + '字符串' + '_'

再者,就是'%'和'_'同时使用的情况了,不再赘述。

如果觉得全表查询速度太慢,可以对要查询的字段建立索引。

另外,如果要查询字段当中包含'%'或者'_'的话,在其前面加上转义符'\'即可。

-- 查询ORGNAME为'_阳X'的数据
select t.ORGNAME FROM base_org_info_copy1 t WHERE t.ORGNAME LIKE '\_阳_';
-- 查询ORGNAME包含'%阳'的数据
select t.ORGNAME FROM base_org_info_copy1 t WHERE t.ORGNAME LIKE '%\%阳%';

关于like '%字符串'和like '%字符串%'不走索引的解决方案,见文末推荐。

3.locate() 推荐使用

LOCATE(substr,str):判断是否包含某字符串,如果包含将返回>0的数值,否则,返回0;

常见的用法有两种:

方式一:筛选出包含指定字符串的数据;

select t.ORGNAME FROM base_org_info_copy1 t WHERE LOCATE('阳',t.ORGNAME) LIMIT 1;

 

方式二:筛选出不包含指定字符串的数据;

select t.ORGNAME FROM base_org_info_copy1 t WHERE LOCATE('阳',t.ORGNAME)=0 LIMIT 1;

LOCATE(substr,str,pos)

表示的是:返回在pos位置之后,substr在str中出现的位置。若substr在str的pos位置之后没有出现,则返回0。

4.POSITION()

POSITION(substr IN str)的用法与locate() 一模一样。

5.instr()

INSTR(str,substr)与position(substr IN str)和LOCATE(substr,str)用法一样,只不过是:顺序不同;

instr(),是将被包含的字符串放在第2个参数当中。

6.find_in_set()

FIND_IN_SET(str,strlist)

第一个参数:表示要查找的字符串;

第二个参数:字符串集合,以需要以逗号隔开。

该函数的含义是:查找字符串在集合当中的位置;如果存在,就返回所在位置的数值;不存在,就返回0。

说明:忽略大小写;

这个函数,一般情况下没有使用的必要。

select FIND_IN_SET('Marydon','123,321,MARYDON')

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

标签:like,包含,ORGNAME,substr,str,mysql,字符串,select
来源: https://www.cnblogs.com/Marydon20170307/p/15866191.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有