Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Char() не адекватен Ascii()  [new]
JuryPupkin
Member

Откуда:
Сообщений: 5
делаю так...

-- if object_id('aa')is not null drop table aa

create table aa(col nchar(1) collate latvian_ci_as)
insert into aa select nchar(254)

select ascii(col) from aa
возвращает 63 - и это не совсе то, что я ожидаю...

Если я ручками вобью этот знак в таблицу (вбивается без проблем), то select ascii(col) возвращает правильно - 254

nchar(254) - национальная буковка как латинская "z" и сверху галка.

что не так? Подскажите plz ....
16 ноя 09, 16:43    [7935252]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
ASCII ( character_expression )
...
Arguments
character_expression
Is an expression of the type char or varchar.


автор
create table aa(col nchar(1) collate latvian_ci_as)
16 ноя 09, 16:44    [7935264]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
BOL->UNICODE ()
16 ноя 09, 16:45    [7935277]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
Glory
Member

Откуда:
Сообщений: 104760
JuryPupkin


Если я ручками вобью этот знак в таблицу (вбивается без проблем), то select ascii(col) возвращает

И как интересно вы ручками вбиваете в таблицу Unicode ? Не поделитесь рецептом ?


ЗЫ

ASCII ( character_expression )


Arguments
character_expression
Is an expression of the type char or varchar.
16 ноя 09, 16:45    [7935281]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
JuryPupkin
Member

Откуда:
Сообщений: 5
поделюсь, почеме нет.
ставлю раскладку (переключаюсь) на клавиатуре и тычу соответствующую комбинацию кнопок (не выдумали пока такую кнопку (в отличие от кириллицы)).

Всем спасибо, unicode читал "до того" - не помогло как-то...

не смог-бы кто-нибудь подсказать попроще типа
insert into char(buben(...., тогда и unicode перечитается несравненно продуктивнее
16 ноя 09, 17:15    [7935495]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
JuryPupkin
Member

Откуда:
Сообщений: 5
поделюсь, почеме нет.
ставлю раскладку (переключаюсь) на клавиатуре и тычу соответствующую комбинацию кнопок (не выдумали пока такую кнопку (в отличие от кириллицы)).

Всем спасибо, unicode читал "до того" - не помогло как-то...

не смог-бы кто-нибудь подсказать попроще типа
insert into char(buben(...., тогда и unicode перечитается несравненно продуктивнее
16 ноя 09, 17:17    [7935506]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
Glory
Member

Откуда:
Сообщений: 104760
JuryPupkin
поделюсь, почеме нет.
ставлю раскладку (переключаюсь) на клавиатуре и тычу соответствующую комбинацию кнопок (не выдумали пока такую кнопку (в отличие от кириллицы)).

Кирилическая буква набранная при другой раскладке клавиатуры не делает передаваемые серверу данные Юникодовскими

JuryPupkin

не смог-бы кто-нибудь подсказать попроще типа
insert into char(buben(...., тогда и unicode перечитается несравненно продуктивнее

Что вы вообще хотите сделать ? Вы хотите работать с Unicode как с none-Unicode ?
16 ноя 09, 17:18    [7935512]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
JuryPupkin
Member

Откуда:
Сообщений: 5
Я открываю sql Server Management, и в текстовое поле (varchar) ввожу текст на национальном языке с включением в текст национальных знаков (не хочу их здесь написать - Вы их увидите кракозябрами). Но я то их вижу и они прописались в базу после моего ввода. Я специально для проверки факта прописывания сервер перегружал.
и select(ascii(substring(етот знак))) возвращает правильное значение.
Заметьте, я специально не заостряю на unicone или none. Мне это не важно. Я хочу найти SQL-й "бубен", который даст возможность прописать (а потом прочитать) национальный текст.

Спасибо
16 ноя 09, 18:03    [7935810]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
GlebZ
Member

Откуда: USA
Сообщений: 284
select UNICODE(col) from aa
Водку? Водку - буду!
16 ноя 09, 18:41    [7936010]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
Glory
Member

Откуда:
Сообщений: 104760
JuryPupkin
Я открываю sql Server Management, и в текстовое поле (varchar) ввожу текст на национальном языке с включением в текст национальных знаков (не хочу их здесь написать - Вы их увидите кракозябрами). Но я то их вижу и они прописались в базу после моего ввода. Я специально для проверки факта прописывания сервер перегружал.
и select(ascii(substring(етот знак))) возвращает правильное значение.
Заметьте, я специально не заостряю на unicone или none. Мне это не важно. Я хочу найти SQL-й "бубен", который даст возможность прописать (а потом прочитать) национальный текст.

Спасибо

А вы разницу между прочитать и ототбразить понимаете ?
Сервер вам возвращает не те байты, что вы занесли в поле разве ?
16 ноя 09, 19:04    [7936099]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
JuryPupkin
Member

Откуда:
Сообщений: 5
по поводу разницы - не исключаю и рад и спасибо, если научат. я и вопросы задаю в надежде, что научат.

и Сервер мне возвращает именно не те байты. Если-бы те - я и не спрасивал бы.

insert into aa select nchar(254)
select ascii(col) from aa возвращает 63. Какие же ето те ?
17 ноя 09, 01:40    [7936901]     Ответить | Цитировать Сообщить модератору
 Re: Char() не адекватен Ascii()  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8679
JuryPupkin
по поводу разницы - не исключаю и рад и спасибо, если научат. я и вопросы задаю в надежде, что научат.

и Сервер мне возвращает именно не те байты. Если-бы те - я и не спрасивал бы.

insert into aa select nchar(254)
select ascii(col) from aa возвращает 63. Какие же ето те ?


Коллега, сравниет (и выполните) всего два вопроса:
select ascii(nchar(254))
select ascii(char(254))

А теперь оцените разницу между функциями char и nchar.
Если не получается с первого взгляда - загляните в книжку (или мануал типа BOL).
Например, вот это:
DECLARE @nstring nchar(12)
SET @nstring = N'Åkergatan 24'
SELECT UNICODE(@nstring), NCHAR(UNICODE(@nstring))
(с)Электронная документация по SQL Server 2008 (июль 2009 г.) , раздел UNICODE (Transact-SQL)
17 ноя 09, 02:22    [7936924]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить