使用MySQL的rlike判断字符串是否匹配

问题提出:

表user_experience_wealth_log改名为user_experience_wealth_log_new,该表涉及若干存储过程。为了避免遗漏,需要确认所有相关过程都做了修改,验证方法为不存在包含user_experience_wealth_log的存储过程。

问题分析:

不能使用简单的 not like '%user_experience_wealth_log%',因为这样也会过滤掉包含user_experience_wealth_log_new的记录。使用rlike的正则表达式即可轻松解决。

查询语句:

-- 只包含user_experience_wealth_log_new
select routine_schema,routine_name from routines 
 where routine_type='procedure' 
 and routine_definition rlike 'user_experience_wealth_log_new'
 and routine_definition not rlike 'user_experience_wealth_log[^_]';
 
-- 只包含user_experience_wealth_log
select routine_schema,routine_name from routines 
 where routine_type='procedure' 
 and routine_definition rlike 'user_experience_wealth_log[^_]'
 and routine_definition not rlike 'user_experience_wealth_log_new';
 
-- 两个都包含
select routine_schema,routine_name from routines 
 where routine_type='procedure' 
 and routine_definition rlike 'user_experience_wealth_log_new'
 and routine_definition rlike 'user_experience_wealth_log[^_]';

 

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值