mysql正则匹配和 区分大小写 和mybatisplus.apply使用

SELECT
	id,
	host_id,
	last_value,
	prev_value,
	clock,
	units,
	item_key 
FROM
	monitor_history_data 
WHERE
	( host_id = 8 AND clock BETWEEN '2022-02-16T10:26:53.031+0800' AND '2022-02-16T11:26:53.031+0800' AND item_key REGEXP '^vfs.fs.size.*,pused]$' ) 
ORDER BY
	clock ASC

今天看大哥写的代码 才知道 原来正则基本所有语言都可以使用

mysql 正则关键字 REGEXP
看一下后端代码

List<MonitorHistoryData> diskList = monitorHistoryDataService.list(new QueryWrapper<MonitorHistoryData>().lambda()
                .eq(MonitorHistoryData::getHostId, host.getHostId())
                .between(MonitorHistoryData::getClock,beginTime,endTime)
               .apply("item_key REGEXP '^vfs.fs.size.*,pused]$'")
                .orderByAsc(MonitorHistoryData::getClock));

上句sql就是这个传输的
.apply(“item_key REGEXP ‘^vfs.fs.size.*,pused]$’”)

使用的myatisplus 得apply来传输得 。该方法可用于数据库函数 动态入参的params对应前面applySql内部的{index}部分
返回数据
返回数据
如果要区分大小写的 需要加入 BINARY 这个关键字

-- 不区分大小写
SELECT * FROM sys_user WHERE sys_user.username REGEXP  '^a';

-- 区分大小写

SELECT * FROM sys_user WHERE sys_user.username REGEXP BINARY '^a';

官方文档
之前用得是like 来查的 但是只能匹配前后 不能匹配中间
REGEXP mysql 正则
^ 行首的位置
* 匹配前面的子表达式任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等价于{0,}。
$ 匹配行末位置

正则参考链接
更多mysql 正则参考链接

猜你喜欢

转载自blog.csdn.net/weixin_43686599/article/details/122959872