3

如何使用 PHP Regex 从 MySQL 查询中剥离/删除所有值?

例子:

原文:SELECT id, abc FROM mytable WHERE id IN (12, 15)
条纹:SELECT id, abc FROM mytable WHERE id IN ()

原来的:

SELECT ut.id, IF(stagiaire_devis.id IS NOT NULL, CONCAT(ut.prenom, ' (my lovely)', ut.prenom) AS value FROM quality AS uq, avocate, utility AS ut LEFT JOIN stagiaire_devis ON (stagiaire_devis.id_devis='1293049' AND stagiaire_devis.id_utilisateur=ut.id) WHERE uq.id_utilisateur = ut.id AND avocate.id_utilisateur = ut.id AND avocate.deleted = 0 AND avocate.id_avocat_liste_cabinet = 7 AND uq.id_liste_qualite IN (5,2,9) AND uq.actif = 2 ORDER BY ut.prenom

有条纹的:

SELECT ut.id, IF(stagiaire_devis.id IS NOT NULL, CONCAT(ut.prenom, '', ut.prenom) AS value FROM quality AS uq, avocate, utility AS ut LEFT JOIN stagiaire_devis ON (stagiaire_devis.id_devis='' AND stagiaire_devis.id_utilisateur=ut.id) WHERE uq.id_utilisateur = ut.id AND avocate.id_utilisateur = ut.id AND avocate.deleted = AND avocate.id_avocat_liste_cabinet = AND uq.id_liste_qualite IN () AND uq.actif = ORDER BY ut.prenom

我找不到正确的正则表达式:(

4

1 回答 1

3

您不能使用任何正则表达式来执行此操作,因为 SQL 不是常规语言

要执行此任务,您需要使用SQL 解析器


编辑关于您的评论:

好的,您需要为查询建立一种“指纹”,以便当查询仅在常量值上有所不同时,您可以将查询分组在一起。

pt-query-digest工具可以做到这一点。它适用于慢查询日志或一般日志,但不适用于错误日志。但它可能并不难使用awk或将您的错误日志转换为 pt-query-digest 可以读取的格式。

于 2012-11-02T16:41:07.417 回答