Pour mettre en forme des milliers de requêtes SQL, je dois convertir tous les caractères qui ne sont pas entre guillemets en majuscules.Comment faire pour convertir les caractères non cités en majuscules?
Par exemple:
select * from region where regionkey = 'America'
à convertir en
SELECT * FROM REGION WHERE REGIONKEY = 'America'
Avec Perl, je suis en mesure de convertir ces caractères cités en majuscules par:
perl -p -e 's/('.+?')/\U\1/g'
et obtenir :
select * from region where regionkey = 'AMERICA'
La question est de savoir comment "inverser" le résultat de la capture, disons, de marcher à pas entre guillemets?
sont là les citations dans les citations? par exemple. '' Hawai '' je? – ysth
Les mots clés SQL ne sont pas sensibles à la casse. En quoi est-ce important? –
@JimGarrison Je travaille avec un moteur SQL qui a tous les noms d'objets de base de données (y compris les tables, les vues, les champs) sensibles à la casse. Je me fiche que ce soit "sELECt fROm" ou "sElEcT FoRm", mais REGIONKEY ou RegionKey est important. Dans mon cas d'utilisation tous les objets sont nommés en majuscules, pour simplifier le traitement, je convertis tout en dehors de la citation en majuscule. – zhaow