使用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[^_]';

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章