Mysql 查询某个字段中是否包某个字符串的几种函数及对比
- 经验分享
- 时间:2019-05-01 11:22
- 3008人已阅读
简介
在工作中,有时候,我们会遇到这种需求,比如,批量修改某个字段的数据值,这个字段又是字符串且这些字符串都包含指定特殊的字符串,这个时候怎么办呢?如下:我们需要,在sys_pid字段,批量添加mm_xxx_这个值,而且sys_pid字段有个特点,就是:都包含了359950439_值。分析:一:查询a表中,sys_pid字段包含359950439_的所有数据。二:在字段前添加mm_xxx_1:查询包含3
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
在工作中,有时候,我们会遇到这种需求,比如 ,批量修改某个字段的数据值,这个字段又是字符串且这些字符串都包含指定特殊的字符串,这个时候怎么办呢?
如下:
我们需要,在sys_pid字段,批量添加mm_xxx_这个值,而且sys_pid字段有个特点,就是:都包含了
359950439_值。
分析:
一:查询a表中,sys_pid字段包含359950439_的所有数据。
二:在字段前添加mm_xxx_
1:查询包含359950439_的所有数据怎么查询?
方案有如下几种:
1.1:使用like模糊查询。
like语法:
select 字段名称 from 表名 where 字段 like ‘%模糊的keyword%’
sql语句如下:
select * from a where sys_pid like '%359950439_%';
1.2:使用find_in_set函数
语法:
select 字段名称 from 表名 where find_in_set('模糊的keyword',字段);
sql:
select * from a where find_in_set('359950439_',sys_pid);
1.3:使用locate函数
语法:
select 字段名称 from 表名 where locate('模糊的keyword',字段);
sql:
select * from a where locate('359950439_',sys_pid);
1.4:使用instr函数
语法:select 字段名称 from 表名 where INSTR(字段,'模糊的keyword');
sql:
select * from a where INSTR(sys_pid,'359950439_')
1.5:使用locate 它的别名是 position in
语法:
select * from 表名 where position(字符 in 字段);
sql:
select * from a where position('359950439_' in sys_pid);
其中,1.2不能查询,其他的四种都可以查询。
需要注意的是:
find_in_set函数,find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。
执行更新:使用CONCAT函数
语法:
1. CONCAT(string1,string2,…) 说明 : string1,string2代表字符串,concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
例1:
所以我们的更新sql为:
update a set sys_pid= CONCAT('mm_xxx_',sys_pid) where locate('359950439_',sys_pid)
上一篇: 新版淘宝联盟怎么渠道管理