Это только частично соответствует 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), так что пользуйтесь ими.