sql >> Database teknologi >  >> RDS >> Mysql

Opdel flere SQL-sætninger i individuelle SQL-sætninger

Jeg er ikke sikker på, at det overhovedet er muligt. Du har helt sikkert brug for et indgående kendskab til SQL-syntaksen for dit mål-DBMS. For eksempel lige fra toppen af ​​mit hoved er dette en enkelt MySQL-sætning:

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

Det er sandsynligt, at der er konstruktioner i nogle DBMS'er, som uden afgrænsning kan være tvetydige.

Jeg tror, ​​du kan blive tvunget til det. Det er fuldstændig standardmåden at afgrænse SQL-sætninger. Selvom du kan finde en heuristik til at detektere sandsynligvis-start-af-SQL-sætningspunkter, risikerer du katastrofer som en utilsigtet "DELETE FROM things"-uden-WHERE-klausul.

Ville dobbelt-ny linje-for-ny-udsagn være acceptabelt?

Nej, selv med semikolon-afgrænsninger, regex er langt fra kraftfuldt nok til at parse SQL. Problempunkter ville omfatte:

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

og enhver interposition af disse strukturer. Æk!



  1. javax.naming.NoInitialContextException med mysql DataSource

  2. MySQL - Sådan tælles alle rækker pr. tabel i én forespørgsel

  3. Konverter 'datetimeoffset' til 'datetime2' i SQL Server (T-SQL-eksempler)

  4. Opret pivotvisning i SQL fra en SQL-tabel