Здесь N'омная строка ' ANSI SQL?

Мы знаем, что для того, чтобы квалифицировать строковый литерал как Unicode, нам нужно добавить к нему префикс N в Transact-SQL. Мой вопрос, является ли это частью какого-либо стандарта, такого как ANSI SQL. Понимают ли это другие платформы баз данных?

ОБНОВИТЬ:

Мои практические эксперименты с Mig# показывают, что для работы с литералами Unicode:

2 ответа

Решение

Согласно документации MSDN для констант в T-SQL, N' Префикс является частью стандарта "SQL-92":

Строки Unicode имеют формат, аналогичный символьным строкам, но им предшествует идентификатор N (N обозначает Национальный язык в стандарте SQL-92).

Согласно Википедии, в этой версии стандарта были добавлены строки "National Character". Эта статья ссылается на то, что представляется фактическим стандартным документом http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt где говорится:

НАЦИОНАЛЬНЫЙ ХАРАКТЕР <ключевого слова>используется для указания типа данных символьной строки с определенным реализацией символьным репертуаром. Специальный синтаксис (N'string') предназначен для представления литералов в этом репертуаре символов.

Так что, да, похоже, что это определенно часть стандарта.

ОБНОВИТЬ:

Как отметил в комментариях Damien_The_Unbeliever, вышеупомянутый стандартный документ на самом деле является черновиком (и, предположительно, фактический стандартный документ не является общедоступным), но, на мой взгляд, имеется достаточно доказательств того, что, по крайней мере, поскольку национальный характер N обеспокоен тем, что это стандарт.

В разделе

4.2 Символьные строки

Спецификации SQL92 ( http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt)

НАЦИОНАЛЬНЫЙ ХАРАКТЕР s используется для указания типа данных символьной строки с определенным реализацией символьным репертуаром. Специальный синтаксис (N'string') предназначен для представления литералов в этом репертуаре символов.

Так что да, это стандарт ANSI в соответствии с наиболее широко используемыми спецификациями

Другие вопросы по тегам