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

1.情景展示

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

2.使用关键字:like

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

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

_:它代表任意一个字符

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-- 查询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;

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

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

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

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

LOCATE(substr,str,pos)

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

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

4.POSITION()

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

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

5.instr()

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

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

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

6.find_in_set()

FIND_IN_SET(str,strlist)

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

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

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

说明:忽略大小写;

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

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

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

写在最后

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

 相关推荐:

上一篇:【TcaplusDB知识库】[Generic表]加减字段值示例代码


下一篇:ctf.show_web6