|
|
|
CHAR/UNICHAR/NCHAR FAQ
|
|||
|---|---|---|---|
|
#18+
Предлагаю поделиться знаниями по поводу предмета и (если получится) сформировать раздел в FAQ. Я вот например не совсем там всё понимаю. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 19:11 |
|
||
|
CHAR/UNICHAR/NCHAR FAQ
|
|||
|---|---|---|---|
|
#18+
Именно char? В разрезе что и когда нужно использовать и в чем разница между nchar и unichar? varchar, nvarchar, univarchar и в чем разница их с аналогичными char'ами трогать не будем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 21:24 |
|
||
|
CHAR/UNICHAR/NCHAR FAQ
|
|||
|---|---|---|---|
|
#18+
SQLMantisvarchar, nvarchar, univarchar и в чем разница их с аналогичными char'ами трогать не будем? Если можно и этих троньте. Лишним не будет.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2009, 13:51 |
|
||
|
CHAR/UNICHAR/NCHAR FAQ
|
|||
|---|---|---|---|
|
#18+
в совсем крупную клетку. Все символьные типы можно разбить на две группы по следующим признакам. По типу хранения в памяти 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) возможности конвертации между этими типами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2009, 16:59 |
|
||
|
CHAR/UNICHAR/NCHAR FAQ
|
|||
|---|---|---|---|
|
#18+
Вот это еще интересно почитать на предмет того нафига еще один юникод-тип ввели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2009, 19:16 |
|
||
|
CHAR/UNICHAR/NCHAR FAQ
|
|||
|---|---|---|---|
|
#18+
еще пару фактов: 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 китайских иероглифов. т.о. проверку длины нужно делать на клиенте обязательно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 21:05 |
|
||
|
CHAR/UNICHAR/NCHAR FAQ
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2009, 19:01 |
|
||
|
|

start [/forum/topic.php?fid=55&tid=2010990]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 147ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...