Соответствует ли SQL Server Express ANSI? - PullRequest
3 голосов
/ 11 ноября 2009

Можно ли выполнять операторы ANSI SQL в SQL Server Express 2005 или 2008?

Ответы [ 3 ]

3 голосов
/ 11 ноября 2009

Sql Сервер понимает Ansi Sql. Однако всегда есть разные интерпретации стандартов. Вот статья, в которой я обнаружил некоторые из отличий: Думаете, стандарт SQL ANSI полностью переносим между базами данных? Подумай еще раз.

1 голос
/ 28 августа 2012

Это только частично соответствует ANSI. Самым большим отличием является оператор конкатенации строк, который должен быть ||, но в SQL Server +.

Кроме того, в зависимости от параметров сортировки текущей базы данных он может не соответствовать правилам учета регистра, требуемым стандартом.

Другие (я думаю, необходимые) функции ANSI, которые отсутствуют:

  • без литералов даты / времени ANSI (DATE '2012-08-28', TIMESTAMP '2012-08-28 17:33:05')
  • тип данных без интервала
  • Конструктор строки VALUES (вне предложения INSERT)
  • Нет сравнения кортежей (col1, col2) = (1,2)
  • NULLS FIRST/LAST опция для ORDER BY

Большинство отсутствующих функций имеют некоторый нестандартный эквивалент в T-SQL.

Стандарт SQL - это хорошо, и если у меня есть выбор между двумя конструкциями SQL, я выбираю стандартную вместо нестандартной.

Но написание независимых от СУБД приложений просто не сработает (хорошо) - по крайней мере, для нетривиальных приложений.

Если он действительно независим от СУБД, это просто означает, что он будет одинаково медленным на всех СУБД.

Вы заплатили много денег за все функции SQL Server (или не так много за SQL Server Express), так что пользуйтесь ими.

1 голос
/ 11 ноября 2009

Если вы используете только бэкэнды SQL Server для своего продукта, забудьте о ANSII sql, у T-SQL есть гораздо более эффективные и эффективные способы запроса базы данных SQL Server. ANSII - это нормально, если вам нужно иметь несколько бэкэндов, но если вы этого не сделаете, глупо ограничивать себя наименее эффективным из доступных кодов. Это верно для любого бэкэнда базы данных, проприетарный язык для этой базы данных спроектирован так, чтобы работать лучше, чем что-либо еще.

Но в ответ на ваш вопрос, да, некоторые из стандартов ANSII работают, а некоторые - нет. Для любых базовых запросов вы можете быть в порядке, это сложные вещи, которые, как правило, указывают на различия. Так что в принципе вы не можете выйти из всего этого тестирования. Что вы должны делать в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...