Около десяти лет назад я установил ссылку на давно устаревшую ссылку на документ, озаглавленный «Уровни соответствия поставщиков ANSI SQL».Я сохранил это, чтобы я мог думать: «Ах, как странно».Стандарт теперь ISO (I = международный), а не только ANSI (A = США).Никто больше не пытается документировать подобные вещи для более чем одного продукта SQL.
Все поставщики обращают пристальное внимание на стандарт SQL и будут объявлять о соответствии уровня для каждой функции.Даже если таких заявлений не поступает, вы знаете, что они прочитали стандартную спецификацию, даже если это означает неопровержимое решение расширить или сделать вещи совершенно по-другому.Если вы заинтересованы в переносимости, то привыкните к написанию стандартного SQL, который реализован или аналогичен синтаксису в продуктах SQL, на которые вы хотите ориентироваться.
Взяв в качестве примеров mySQL и SQL Server.Я предполагаю, что некоторые функции mySQL (например, ORDER BY LIMIT
) ближе к стандартам, чем SQL Server (TOP
), потому что mySQL пришел на вечеринку позже и на самом деле имел стандартную спецификацию, которой нужно следовать, и не было устаревшей версии, которая была бы совместима с,Я предполагаю, что другие функции в MySQL (update on duplicate key
) не соответствуют стандартам (SQL Server расширяет MERGE
от стандартов), потому что они хотели что-то более простое в реализации и более простых пользователей.Я предполагаю, что некоторые функции MySQL близки к тем, что есть в SQL Server, чтобы иметь возможность переманивать пользователей!