mysql中的find_in_set字符串查找函数如何使用

需求

系统中,不论是订单还是退货单,有的平台使用需要卖家审核,有的则不需要,所以在系统中可以设置订单或退货单的流程节点。

而对于每个流程节点,客户需求是每个节点都要根据系统下的员工的角色去做分发,从而订单指定到个人,而不是整个公司的员工都可以处理。

方案

对于上述场景,我实现的方案是在订单表和退货单表都增加了对应节点待处理人字段,多个人可处理的话,则用,分隔,保存对应员工的id集合。

所以,在查询订单的方法上我们也需要进行对应的修改,每个人只能看到自己可处理的订单。

表内容样例如下:

mysql中的find_in_set字符串查找函数如何使用

员工登录系统,我们可以得到其对应的id,而我们需要将其id去对应的字段查找,是否在业务审核,财务审核或发货人的集合中。这时候,SQL该怎么改?

函数

在改SQL之前,我想的是,之前总结过MYSQL的很多函数,而对于上面的实现,MYSQL中肯定会有对应的函数帮助我们实现。果真,被我查到了。

1. 介绍

MySQL提供了一个名为FIND_IN_SET()的内置字符串函数,允许您在逗号分隔的字符串列表中查找指定字符串的位置。

2. 语法:FIND_IN_SET(needle,haystack)

FIND_IN_SET()函数接受两个参数:

  • needle是要查找的字符串。

  • haystack是要搜索的逗号分隔的字符串列表。

FIND_IN_SET()函数根据参数的值返回一个整数或一个NULL值:

  • 如果needle或haystack为NULL,则函数返回NULL值。

  • 如果needle不在haystack中,或者haystack是空字符串,则返回零。

  • 如果needle在haystack中,则返回一个正整数。

3. 实战

下面是项目中查编号为8910的员工可处理的待业务审核的订单SQL:

SELECT	t.id_,t.order_sn,t.create_time, t.business_employee_ids,cus.customer_titleFROM	wms_orders tLEFT JOIN wms_customer cus ON cus.id = t.buyer_idWHERE	t.order_status != 100AND t.comp_id = 8815AND FIND_IN_SET(	'8910',	t.business_employee_ids)AND t.order_status = 14AND (	t.parent_order_sn IS NULL	OR t.parent_order_sn = '')ORDER BY	t.id_ DESC

结果如下:

mysql中的find_in_set字符串查找函数如何使用

上面结果截图中,框出的三条订单,id为6594,6523,6373是只有员工编号为8910能处理的,我们将上面的SQL员工编号改为8912,则此三条订单应该是不在结果范围内的, 从而验证使用此函数查询是否可行。

查询结果如下:

mysql中的find_in_set字符串查找函数如何使用

结果证明查询是没有问题的。

插曲

前两天,有个同事在群里发了个截图,问了个问题,如下:

mysql中的find_in_set字符串查找函数如何使用

简单描述下:

图片地址那一列存的是我们的旧数据中心的地址,而现在新数据中心上线了,所以需要统一替换成新的地址获取图片。

看完后,我就想到了之前用到过MYSQL中的REPLACE()函数,可以做到将字符串替换。所以,update的语句如下:

UPDATE wms_platform_wear_brandSET brand_img = REPLACE (	brand_img,	"http://***/udata/interface/timer/pic/getAttachPic.do?attachId=",	"wms/orderGoods.do?method=getAttachPic&attachId=")

mysql中的find_in_set字符串查找函数如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

文章标题:mysql中的find_in_set字符串查找函数如何使用,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/21276

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云亿速云认证作者
上一篇 2022年8月29日 下午11:51
下一篇 2022年8月29日 下午11:53

相关推荐

  • SQL窗口函数怎么使用

    什么是窗口函数 SQL窗口函数为在线分析处理(OLAP)和商业智能(BI)提供了复杂分析和报表统计的功能,例如产品的累计销售额统计、分类排名、同比/环比分析等。这些功能通常很难通过聚合函数和分组操作来实现。 窗口函数(Window Function)可以像聚合函数一样对一组数据进行分析并返回结果,二…

    2022年9月21日
    18900
  • 怎样进行Apache的配置

    Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。 主站点的配置(基本配置) (1) 基本配置: ServerRoot “/mnt/software/apache2” #你的apache软件安装的位置。其它指定的目录如果…

    2022年9月2日
    27200
  • jmeter正则表达式提取器怎么使用

    使用方法 1,把正则表达式添加到需要提取返回内容的http请求里,添加步骤是,,右键http请求–添加–后置处理器–正则表达式处理器 2,在正则表达式提取器配置设置页里, 1)要检查的响应字段:相当于是要提取哪个位置的内容数据 2)引用名称:我们把内容提取出来后要…

    2022年9月21日
    34300
  • windows edge浏览器高级设置位置在哪

    edge浏览器高级设置找不到: 注:由于edge浏览器更新了新版本,所以高级设置也相应的改变了位置。 1、打开浏览器点击右上角三个点。 2、在下拉任务栏中点击“设置”。 3、在新窗口的左侧点击“高级”即可进入高级设置。 4、在右侧“高级”中进行高级设置。 到此,相信大家对“windows edge浏…

    2022年9月8日
    1.1K00
  • html和xhtml有哪些区别

    HTML超文本标记语言,是一种基于标记的网页设计语言,专门用来设计和编辑网页。XHTML是为了适应XML而重新改造的HTML,也是一种标记语言,它可以看作是从HTML到XML的过渡;XHTML要求在网页中出现的任何元素都应该被标记出来。 什么是HTML HTML 英文全称是 Hyper Text M…

    2022年9月16日
    28600
  • 电脑蓝屏0x0000008e如何解决

    0x0000008e电脑蓝屏处理方法: 方法一: 1、遇到蓝屏问题,可能是软件不兼容、内存错误或操作不当造成的,可以依次解决。 2、首先开机的时候按下F8进入安全模式点击“最后一次正确的配置”这一项重启系统。 3、如果使用这个方法能进入系统,说明是软件不兼容或操作问题,注意不要再进行之前的操作即可。…

    2022年9月16日
    13100
  • dint数据类型的含义是什么

    dint是带符号位的32位整数类型;dint的表示方法及范围是“L#-2147483648~L#+2147483647”,定义为双整数或长整数,字节是电脑里的数据量单位,在计算机中,数据只用0和1这种表现形式。 本教程操作环境:windows10系统、DELL G3电脑。 dint是什么数据类型 D…

    2022年9月6日
    85300
  • piwigo v2.9.5的5个sql注入分别是怎样的

    0x0 项目介绍 项目地址:https://github.com/Piwigo/Piwigo 项目介绍:piwigo是用于网络的开源照相馆软件。 专为组织,团队和个人管理您的照片库而设计。 官网地址:piwigo.org 0x1 准备工作 Linux下下载https://github.com/Piw…

    2022年9月26日
    15200
  • java垃圾收集器有哪些及怎么使用

    垃圾收集器如何演化的? 垃圾收集器的发展路线,简单来说是随着内存越来越大而发生变化。 从分代算法逐渐演化为不分代算法。 从serial的几十兆,逐渐演化到parallel的几个G,再到CMS的几十个G,也从此开始了并发回收。 年轻代收集器 Serial 特点:年轻代、串行回收、STW、简单高效 Se…

    2022年9月15日
    22700
  • MySQL死锁是什么及怎么掌握

    1、什么是死锁? 死锁指的是在两个或两个以上不同的进程或线程中,由于存在共同资源的竞争或进程(或线程)间的通讯而导致各个线程间相互挂起等待,如果没有外力作用,最终会引发整个系统崩溃。 2、Mysql出现死锁的必要条件 资源独占条件 指多个事务在竞争同一个资源时存在互斥性,即在一段时间内某资源只由一个…

    2022年9月1日
    19800
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部