大多數SQL數據庫遵循ANSI SQL標準,在一定程度上存在差異,但列表的SQL數據庫
該標準是模糊的,致使一些地區不同的解釋(例如:操作有什麼不同與
NULLs
應處理is ambiguous)一些廠商矛盾的標準直接或只是缺乏標準所定義的功能(例如:MySQL有標準及其實施)
之間的
某些數據庫的行爲會因配置方式而有所不同,但配置可以更改爲使其行爲相同(例如:默認情況下,Oracle會執行區分大小寫的字符串比較,而SQL Server會將它們區分大小寫)
有一些功能是不是標準的一部分,但由不同的RDBMS反正實現,儘管有不同的名稱(如:Oracle的
LISTAGG
= MySQL的GROUP_CONCAT
)
是否有資源提供全面的當你試圖寫作時,要注意的怪癖列表和疑難雜症應該與多個數據庫兼容的東西?
+1有價值的問題。需要注意的一件事是,您不僅會遇到兼容性問題,還應該考慮在主要支持的RDBMS上測試您的解決方案,以確保沒有不明顯的性能下降,並且沒有任何記錄。在一天結束時,您應該覆蓋自己並說出您特別支持哪些平臺,同時指出稍後可能會支持其他平臺。 – Seph
確實是一個寶貴的問題,但不幸的是,這個問題仍然沒有得到答案。 – FDavidov
我喜歡OReilly SQL快速參考,因爲它向我展示了幾種方言之間的各種語法和差異。不幸的是,這是一個有新功能的移動目標,每當新版本發佈時都會發生變化。還有http://sqlfiddle.com/,它可以讓你嘗試幾個不同版本的服務器(oracle,mysql,...)甚至給定服務器的版本(mysql 5.5和5.6)。 – argoc