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

相关推荐

  • 2024年9款优质CRM系统全方位解析

    文章介绍的工具有:纷享销客、Zoho CRM、八百客、红圈通、简道云、简信CRM、Salesforce、HubSpot CRM、Apptivo。 在选择合适的CRM系统时,许多企业面临着功能繁多、选择困难的痛点。对于中小企业来说,找到一个既能提高客户关系管理效率,又能适应业务扩展的CRM系统尤为重要…

    2024年7月25日
    1600
  • 数据库权限关系图表是什么

    数据库权限关系图表是一种以图表形式展示数据库权限分配和管理的工具。它可以有效地帮助我们理解和管理数据库中的各种权限关系。数据库权限关系图表主要包含以下几个部分:数据对象、用户(或用户组)、权限类型、权限级别、权限状态等。其中,数据对象是权限关系图表中的核心元素,它代表了数据库中的各种数据资源,如表、…

    2024年7月22日
    200
  • 诚信数据库是什么意思

    诚信数据库是一种收集、存储和管理个人或组织诚信信息的系统。它是一种用于评估和管理个人或组织行为的工具,通常由政府、商业组织或者非营利组织进行运营。诚信数据库的主要功能包括:1、评估个人或组织的诚信状况;2、提供决策支持;3、预防和控制风险;4、促进社会信用体系建设。 在这四大功能中,评估个人或组织的…

    2024年7月22日
    400
  • 数据库期末关系代数是什么

    关系代数是一种对关系进行操作的代数系统,是关系模型的数学基础,主要用于从关系数据库中检索数据。其操作包括选择、投影、并集、差集、笛卡尔积、连接、除法等。其中,选择操作是对关系中的元组进行筛选,只保留满足某一条件的元组;投影操作则是从关系中选择出一部分属性构造一个新的关系。 一、选择操作 选择操作是关…

    2024年7月22日
    700
  • mysql建立数据库用什么命令

    在MySQL中,我们使用"CREATE DATABASE"命令来创建数据库。这是一个非常简单且基础的命令,其语法为:CREATE DATABASE 数据库名。在这个命令中,“CREATE DATABASE”是固定的,而“数据库名”则是你要创建的数据库的名称,可以自己设定。例如,如…

    2024年7月22日
    500
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部