Większość SQL bazy danych zgodne ze standardami ANSI SQL do pewnego stopnia, aleLista różnic między SQL baz
standard jest dwuznaczny, pozostawiając pewne obszary otwarte na interpretację (np: jak różne operacje z
NULLs
powinny być obsługiwane is ambiguous)Niektórzy producenci sprzeczne średnia wprost lub po prostu brak funkcjonalności określone przez normę (np: MySQL ma list of differences między normą i ich realizacji)
Niektóre bazy danych będą się różnie zachowywać w zależności od konfiguracji, ale konfigurację można zmienić tak, aby zachowywały się w taki sam sposób (np. Oracle wykonuje domyślnie rozróżnianie wielkości liter w rozróżnianiu wielkości liter, podczas gdy SQL Server nie uwzględnia ich wielkości)
istnieją pewne funkcje, które nie jest częścią standardu, ale jest realizowana przez różne RDBMSs tak, choć z różnymi nazwami (np: Oracle
LISTAGG
= MySQLGROUP_CONCAT
)
Czy istnieje zasób z kompleksowym lista dziwactw i gróźb, na które należy zwracać uwagę, gdy próbujesz pisać coś, co ma być kompatybilne z wieloma bazami danych?
+1 wartościowe pytanie. Jedną z rzeczy, na które należy zwrócić uwagę, jest to, że nie tylko napotkasz problemy z kompatybilnością, ale także powinieneś rozważyć testowanie swoich rozwiązań na głównych obsługiwanych RDBMS, aby upewnić się, że nie ma żadnego niezrozumiałego trafienia wydajności i że nie ma jeszcze niczego nieudokumentowanego. Pod koniec dnia powinieneś się ukryć i powiedzieć, które platformy wspierasz, stwierdzając, że inne platformy mogą być obsługiwane później. – Seph
Rzeczywiście, cenne pytanie, które niestety pozostaje bez odpowiedzi. – FDavidov
Podoba mi się szybkie odwołanie do OReilly SQL, ponieważ pokazuje mi różne składnie i różnice między kilkoma dialektami. Niestety jest to ruchomy cel z nowymi funkcjami i zmianami, gdy tylko pojawią się nowe wersje. Istnieje również http://sqlfiddle.com/, która pozwala wypróbować kilka różnych wersji serwerów (oracle, mysql, ...), a nawet wersje danego serwera (mysql 5.5 i 5.6). – argoc