Для чего действительно нужен тип данных национального символа SQL (NCHAR)?

Кроме CHAR (CHARACTER) и VARCHAR (CHARACTER VARYING) , SQL предлагает тип NCHAR (НАЦИОНАЛЬНЫЙ СИМВОЛ) и NVARCHAR (НАЦИОНАЛЬНЫЙ СИМВОЛ, РАЗЛИЧНЫЙ) . В некоторых базах данных для символьных (небинарных) строк лучше использовать этот тип данных:

  • В SQL Server NCHAR хранится как UTF-16LE и является единственным способом надежного хранения символов, отличных от ASCII, CHAR является только однобайтовой кодовой страницей;

  • В Oracle NVARCHAR может храниться как UTF-16 или UTF-8, а не как однобайтовое сопоставление;

  • Но в MySQL NVARCHAR равно VARCHAR , поэтому нет никакой разницы, любой тип может быть сохранен с помощью UTF-8 или любого другого сопоставления.

Итак, что на самом деле концептуально означает NATIONAL ? В документации поставщиков рассказывается только о том, какие наборы символов используются в их собственных СУБД, а не о фактическом обосновании. Между тем стандарт SQL92 объясняет эту функцию еще менее полезно, заявляя только, что НАЦИОНАЛЬНЫЙ СИМВОЛ хранится в наборе символов, определяемом реализацией. В отличие от простого CHARACTER , который хранится в наборе символов, определяемом реализацией. Это может быть другой набор символов, определяемый реализацией. Или нет.

Спасибо, ANSI. Thansi.

Следует ли использовать NVARCHAR для всех символьных (небинарных) целей хранения? Существуют ли популярные в настоящее время СУБД, в которых они будут делать что-то нежелательное или которые просто не распознают ключевое слово (или литералы N '' )?

50
задан ajax333221 13 December 2011 в 12:44
поделиться