Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Podziel wiele instrukcji SQL na pojedyncze instrukcje SQL

Nie jestem pewien, czy to w ogóle możliwe. Z pewnością potrzebujesz dogłębnej znajomości składni SQL docelowego systemu DBMS. Na przykład tuż nad moją głową jest to pojedyncze polecenie MySQL:

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

Jest prawdopodobne, że w niektórych DBMS istnieją konstrukcje, które bez ogranicznika mogą być niejednoznaczne.

Myślę, że możesz być do tego zmuszony. Jest to całkowicie standardowy sposób ograniczania instrukcji SQL. Nawet jeśli uda Ci się znaleźć heurystykę do wykrywania punktów prawdopodobnie początku instrukcji SQL, ryzykujesz katastrofami, takimi jak przypadkowe „DELETE FROM things”-bez klauzuli WHERE.

Czy wyrażenie podwójnej nowej linii za nową-nową jest dopuszczalne?

Nie, nawet z ograniczniki średników, wyrażenie regularne nie jest wystarczająco wydajne, aby analizować SQL. Punkty problemowe obejmowałyby:

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

oraz wszelkie wstawienie tych struktur. Eek!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL:Zaktualizuj pole za pomocą połączenia wielu pól

  2. Kolumny CONCAT z elokwentnym Laravel 5

  3. Automatyczne wycofanie, jeśli TRANSAKCJA ZATWIERDZENIE nie zostanie osiągnięta

  4. Znaczenie długości varchar w tabeli MySQL

  5. jak automatycznie wstawiać odniesienia do kluczy obcych w tabelach w mysql lub JDBC?