Mysql 正则 实现 like in 效果

当MySQL不支持LIKE IN同时使用时,可以借助REGEXP与GROUP_CONCAT函数组合,解决多条件模糊查询需求。通过创建树结构表、普通表和中间表,利用GROUP_CONCAT拼接查询结果,再用REGEXP进行正则匹配,从而实现类似LIKE IN的功能。在实际操作中,避免使用LIKE与子查询结合,因数据量大可能导致错误。
摘要由CSDN通过智能技术生成

0. 痛点分析

1. MySQL 中 不能 同时 使用 like in 关键字

​ 1.1 like 模糊 查询 关键字

​ 1.2 in 多条件 查询 关键字

​ like in 理论上 实现 的是 就是 多条件 查询 ,但是 Mysql 的 语法 并不支持 该实现,因此 有些 需求 想要 实现 like in 的 效果,只能 通过大量 子查询 实现 ,而且 实现 的 效果 功能 非常 不智能

2.MySQL 函数 的 高级 应用 REGEXP 与 GROUP_CONCAT 组合 使用 实现 like in 效果

​ 使用 MySQL 的 正则 实现 like in 的 效果 思路 如下:

组合 使用 实现 like in 效果

1.情景 描述

表A 为 自关联 表 ( 即 为 id ,pid 的 树 结构 表)

表B 为 普通 表

表C 为 A 和 B 的 中间 表

现在 需要 实现 通过 表C 中 取到的 不定级 的 A 表 ID (也就是树节点 的 不定级 叶子 节点) 以及 A表 中 该 ID 所关联 的所有 叶子节点,前提 ID 与 PID 是 有规律 的, 也就是 树 结构 的 id 是 xxx , xxxyyy , xxxyyyzzz 这种 可以 推导规律的 形式 存储 的 数据 结构

SELECT

org_id

FROM

base_org

WHERE

org_id REGEXP

(

SELECT

GROUP_CONCAT(orgUser.org_id separator ‘|’)

from

base_org_user orgUser

where

orgUser.user_id = #{params.userId}

)

2.解决 思路

2.1. 使用 GROUP_CONCAT()函数 对 查询 出 的 多行 数据 结果 进行 拼接

2.2. 使用 REGEXP 进行 正则匹配

3.注意 事项:

3.1如果 使用

org_id like

(

SELECT

CONCAT(orgUser.org_id,’%’)

from

base_org_user

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值