Regexp pour extraire le nom des tables d'une chaîne.
Posté : 21 oct. 2010, 15:01
Hello 
Je précise avant de commencer: je ne pose pas du tout une question sur SQL ou MySQL. Ma question est à dissocier totallement des fonctionnalités MySQL.
Je dispose au moment de l'execution de mon programme d'une chaine de caractère contenant des condition SQL.
Je souhaite extraire la totalité des tables présentes dans cette chaine.
Quelques exemples de ces chaines: "Tatas.b=1"
ou encore: "Totos.a IN (1) AND Titis.c IN (1)"
Ou même: "COUNT(Tatas.d) > 3 AND Trotros.e LIKE '%Ha%'"
Je précise pour cette dernière chaine que je ne parle donc pas que de conditions "WHERE", mais aussi "HAVING"...
Pour l'instant, je pense utiliser preg_split avec une condition établie sur la base de:
- N'est pas entre guillemets simples ou doubles.
- Commence par une majuscule.
- Finit par un "s" puis un point.
Est-ce que quelqu'un aurait une solution établie déja faite, ou dois-je me lancer dans l'élaboration du Regexp au risque d'oublier les exceptions?
Merci
Pierrot.
Je précise avant de commencer: je ne pose pas du tout une question sur SQL ou MySQL. Ma question est à dissocier totallement des fonctionnalités MySQL.
Je dispose au moment de l'execution de mon programme d'une chaine de caractère contenant des condition SQL.
Je souhaite extraire la totalité des tables présentes dans cette chaine.
Quelques exemples de ces chaines: "Tatas.b=1"
ou encore: "Totos.a IN (1) AND Titis.c IN (1)"
Ou même: "COUNT(Tatas.d) > 3 AND Trotros.e LIKE '%Ha%'"
Je précise pour cette dernière chaine que je ne parle donc pas que de conditions "WHERE", mais aussi "HAVING"...
Pour l'instant, je pense utiliser preg_split avec une condition établie sur la base de:
- N'est pas entre guillemets simples ou doubles.
- Commence par une majuscule.
- Finit par un "s" puis un point.
Est-ce que quelqu'un aurait une solution établie déja faite, ou dois-je me lancer dans l'élaboration du Regexp au risque d'oublier les exceptions?
Merci
Pierrot.