前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql 查询某个字段中是否包某个字符串的几种函数及对比

Mysql 查询某个字段中是否包某个字符串的几种函数及对比

作者头像
凯哥Java
发布2019-06-28 15:02:54
4.9K0
发布2019-06-28 15:02:54
举报
文章被收录于专栏:凯哥Java凯哥Java

在工作中,有时候,我们会遇到这种需求,比如 ,批量修改某个字段的数据值,这个字段又是字符串且这些字符串都包含指定特殊的字符串,这个时候怎么办呢?

如下:

我们需要,在sys_pid字段,批量添加mm_xxx_这个值,而且sys_pid字段有个特点,就是:都包含了

359950439_值。

分析:

一:查询a表中,sys_pid字段包含359950439_的所有数据。

二:在字段前添加mm_xxx_

1:查询包含359950439_的所有数据怎么查询?

方案有如下几种:

1.1:使用like模糊查询。

like语法:

代码语言:javascript
复制
select 字段名称 from 表名 where 字段 like ‘%模糊的keyword%’

sql语句如下:

代码语言:javascript
复制
select * from a where sys_pid like '%359950439_%';

1.2:使用find_in_set函数

语法:

代码语言:javascript
复制
select 字段名称 from 表名 where find_in_set('模糊的keyword',字段);

sql:

代码语言:javascript
复制
select * from  a where find_in_set('359950439_',sys_pid);

1.3:使用locate函数

语法:

代码语言:javascript
复制
select 字段名称 from 表名 where locate('模糊的keyword',字段);

sql:

代码语言:javascript
复制
select * from  a where locate('359950439_',sys_pid);

1.4:使用instr函数

代码语言:javascript
复制
语法:select 字段名称 from 表名 where INSTR(字段,'模糊的keyword');

sql:

代码语言:javascript
复制
select * from a where INSTR(sys_pid,'359950439_')

1.5:使用locate 它的别名是 position in

语法:

代码语言:javascript
复制
select * from 表名 where position(字符 in 字段);

sql:

代码语言:javascript
复制
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:

2a3b7c0b02523f6e2bdc42733c316796.png
2a3b7c0b02523f6e2bdc42733c316796.png

所以我们的更新sql为:

代码语言:javascript
复制
update a set sys_pid= CONCAT('mm_xxx_',sys_pid) where locate('359950439_',sys_pid)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档