sql >> Databasteknik >  >> RDS >> Mysql

Dela upp flera SQL-satser i individuella SQL-satser

Jag är inte säker på att detta är möjligt alls. Du skulle säkert behöva en djupgående kunskap om SQL-syntaxen för ditt mål-DBMS. Till exempel precis utanför mitt huvud är detta en enda MySQL-sats:

INSERT INTO things
SELECT * FROM otherthings ON DUPLICATE KEY
UPDATE thingness=thingness+1

Det är troligt att det finns konstruktioner i vissa DBMS som, utan en avgränsare, kan vara tvetydiga.

Jag tror att du kan bli tvungen. Det är helt och hållet standardsättet att avgränsa SQL-satser. Även om du kan hitta en heuristik för att upptäcka sannolikt-start-av-SQL-satspunkter, riskerar du katastrofer som en oavsiktlig "DELETE FROM things"-utan-WHERE-klausul.

Skulle dubbel-nyrad-för-ny-påstående vara acceptabelt?

Nej, även med semikolonavgränsare, regex är inte i närheten av tillräckligt kraftfullt för att analysera SQL. Problempunkter skulle vara:

';'
";"
`;`
'\';'
''';'
-- ;
#;
/*;*/

och eventuell interposition av dessa strukturer. Eek!



  1. MySQL fulltextsökning med partiella ord

  2. Hur man aktiverar ENUM i Symfony 2 / Doctrine

  3. Optimeringströsklar – gruppering och aggregering av data, del 1

  4. ListView-kontroll med Ms-Access TreeView