問題提出:
表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[^_]';