powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему не работает конкатенация ?
6 сообщений из 6, страница 1 из 1
Почему не работает конкатенация ?
    #39612936
Adylov Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброй ночи!
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select ascii(q)
       ,q
       ,'Буква: ' || q
  from (
  select 'A' q from dual
  union all
  select 'a' q from dual
  union all
  select 'ц' q from dual
  union all
  select 'Ц' q from dual
  union all
  select chr(246) q from dual)



Почему буква 'ц' с кодом 246 при конкатенации теряется? Как это можно решить?

Спасибо!
...
Рейтинг: 0 / 0
Почему не работает конкатенация ?
    #39612937
Adylov Timur,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select ascii(q)
       ,q
       ,'Буква: ' || q
      , (SELECT value FROM NLS_DATABASE_PARAMETERS where parameter = 'NLS_CHARACTERSET') as NLS_CHARACTERSET
  from (
  select 'A' q from dual
  union all
  select 'a' q from dual
  union all
  select 'z' q from dual
  union all
  select 'А' q from dual
  union all
  select 'ц' q from dual
  union all
  select convert('ц', 'cl8mswin1251') q from dual
  union all
  select 'Ц' q from dual
  union all
  select chr(246) q from dual) ;



ASCII(Q) Q 'БУКВА:'||Q NLS_CHARACTERSET65 A Буква: A AL32UTF897 a Буква: a AL32UTF8122 z Буква: z AL32UTF853392 А Буква: А AL32UTF853638 ц Буква: ц AL32UTF8246 - Буква: AL32UTF853414 Ц Буква: Ц AL32UTF8246 - Буква: AL32UTF8
...
Рейтинг: 0 / 0
Почему не работает конкатенация ?
    #39612945
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adylov TimurКак это можно решить?Не путать байты с символами. И использовать для преобразования первых в последние (как и наоборот) правильный API с указанием кодировки последовательности байтов:
Код: plsql
1.
2.
3.
4.
5.
SQL> select utl_i18n.raw_to_char(to_char(246, 'fmxx'), 'cl8mswin1251') as byte_to_char from dual;

BYTE_TO_CHAR
-------------------------------------------------------------------------------------------------
ц


И CHR использовать только для некоторых служебных кодов вроде 10 или 13.
...
Рейтинг: 0 / 0
Почему не работает конкатенация ?
    #39612957
Adylov Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Спасибо.
А как теперь получить из этого символа обратно код 246??
...
Рейтинг: 0 / 0
Почему не работает конкатенация ?
    #39612958
Adylov Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снят, сам разобрался!

Код: plsql
1.
2.
select to_number(utl_i18n.string_to_raw(utl_i18n.raw_to_char(to_char(246, 'fmxx'), 'cl8mswin1251'),'cl8mswin1251'), 'xx') as byte_to_char 
  from dual;



Спасибо!
...
Рейтинг: 0 / 0
Почему не работает конкатенация ?
    #39612960
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adylov TimurА как теперь получить из этого символа обратно код 246??В какой кодировке?
Elicнаоборот
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему не работает конкатенация ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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