powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / CHAR/UNICHAR/NCHAR FAQ
7 сообщений из 7, страница 1 из 1
CHAR/UNICHAR/NCHAR FAQ
    #36042133
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю поделиться знаниями по поводу предмета и (если получится)
сформировать раздел в FAQ. Я вот например не совсем там всё понимаю.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
CHAR/UNICHAR/NCHAR FAQ
    #36044675
SQLMantis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно char?
В разрезе что и когда нужно использовать и в чем разница между nchar и unichar?
varchar, nvarchar, univarchar и в чем разница их с аналогичными char'ами трогать не будем?
...
Рейтинг: 0 / 0
CHAR/UNICHAR/NCHAR FAQ
    #36045960
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLMantisvarchar, nvarchar, univarchar и в чем разница их с аналогичными char'ами трогать не будем?
Если можно и этих троньте. Лишним не будет.)
...
Рейтинг: 0 / 0
CHAR/UNICHAR/NCHAR FAQ
    #36046526
SQLMantis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в совсем крупную клетку.

Все символьные типы можно разбить на две группы по следующим признакам.

По типу хранения в памяти
1) фиксированная длинна переменной (char, nchar, unichar)
2) переменная длинна переменной (varchar, nvarchar, univarchar)

По хранимым данным
1) Символы, 8 бит (char, varchar)
2) UFT-8, 8 бит (nchar, nvarchar)
3) UTF-16, 16 бит (unichar, univarchar)

Длинна переменной задается в помощью переменной (n), при этом есть несколько НО.
1) при указании длинны char или varchar мы указываем n как коль-во байт или символов (1 символ = 1 байт)
2) при указании длинный nchar или nvarchar n = кол-ву символов. Разница с char и varchar в том что обьем выделяемой памяти равен n*@@ncharsize. @@ncharsize зависит от выбранной кодировки?
3) У unichar и univarchar n = коль-во символов и реальный размер равем n*@@unicharsize.
@@unicharsize = 16 бит.


Потом надо еще поговорить:
1) про то как сервер работает с переменными не постоянной длинны.
2) возможности конвертации между этими типами
...
Рейтинг: 0 / 0
CHAR/UNICHAR/NCHAR FAQ
    #36046935
SQLMantis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это еще интересно почитать на предмет того нафига еще один юникод-тип ввели.
...
Рейтинг: 0 / 0
CHAR/UNICHAR/NCHAR FAQ
    #36058540
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще пару фактов:

nchar/nvarchar : 1 символ - от одного и теоритически до четырех байт; практически до трех.
кирилица и европейские спец-символы по два байта.
иероглифы - три байта.

ф-я execute('...') не принимает unichar (ASE 12.5)

openclient работает исключительно с UTF-8
при использовании uni(var)char конвертация UTF16 -> UTF8 происходит при передаче от сервера в openclient
фактов замедления работы замечено не было.

при хранении в UTF8 сервер не проверяет правильности последовательности байт.
т.о. реально можно сохранить некорректную UFT8 последовательность байт.

важно! UNI(VAR)CHAR vs. N(VAR)CHAR
при использовании UNICHAR работа практически не отличается от обычного CHAR
при использовании NCHAR:
например вы создали поле NCHAR(10)
при стандартных настройках у вас физически будет поле CHAR(30)
т.о. в это поле сервер даст записать:
30 английских символов (ASCI code <= 127)
15 символов кирилицы и европейских спец символов
10 китайских иероглифов.
т.о. проверку длины нужно делать на клиенте обязательно!
...
Рейтинг: 0 / 0
CHAR/UNICHAR/NCHAR FAQ
    #36073527
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLMantis wrote:


> *По хранимым данным*
Не, нифига не так.

1) размер символа в 8 бит (char, varchar) (кодировки latin-1 и её национальные
расширения, влезающие в байт)
3) размер символа 16 бит (unichar, univarchar) кодировки UTF-16, без расширенных
символов (> 2 байт)
2) размер символа такой же, как в дефолтном чарсете сервера (nchar, nvarchar).
Как правило, это -- 4 байта и применяется для иероглифических языков типа
китайского и японского.


> Длинна переменной задается в помощью переменной (n), при этом есть
> несколько НО.
> 1) при указании длинны char или varchar мы указываем n как коль-во байт
> или символов (1 символ = 1 байт)
> 2) при указании длинный nchar или nvarchar n = кол-ву символов. Разница
> с char и varchar в том что обьем выделяемой памяти равен n*@@ncharsize.
> @@ncharsize зависит от выбранной кодировки?
> 3) У unichar и univarchar n = коль-во символов и реальный размер равем
> n*@@unicharsize.
> @@unicharsize = 16 бит.

Т.е. всё просто - размер указывается в количестве символов. Символ - разной
длины.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / CHAR/UNICHAR/NCHAR FAQ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]