Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / юникод и TRANSLATE / 3 сообщений из 3, страница 1 из 1
17.06.2015, 10:56
    #38985513
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
юникод и TRANSLATE
Вынужден переводить базу с 1251 на юникод. С размаху натолкнулся на
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
connect to mtickpro user vvm using           
 Database server        = DB2/LINUXX8664 10.5.5

values(translate('WЯWЯ','X','W'))
1               
----------------
XЯXЯ            
  1 record(s) selected.

values(translate('WЯWЯ','Ю','Я'))
1               
----------------
WЮWЮ            
  1 record(s) selected.

values(translate('WЯWЯ','Я','W'))
1               
----------------
SQL0176N  The second, third or fourth argument of the TRANSLATE scalar 
function is incorrect.  SQLSTATE=42815

values(translate('WЯWЯ','X','Я'))
1               
----------------
SQL0176N  The second, third or fourth argument of the TRANSLATE scalar 
function is incorrect.  SQLSTATE=42815



Что занятно, REPLACE работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
values(replace('WЯWЯ','W','X'))
1               
----------------
XЯXЯ            
  1 record(s) selected.


values(replace('WЯWЯ','Я','Ю'))
1               
----------------
WЮWЮ            
  1 record(s) selected.


values(replace('WЯWЯ','W','Ю'))
1               
----------------
ЮЯЮЯ            
  1 record(s) selected.


values(replace('WЯWЯ','Я','X'))
1               
----------------
WXWX            
  1 record(s) selected.



Однако это не является полноценным заменителем - представьте себе функцию транслитерации из кириллицы в латиницу, например.

Я почти собрался начать писать свою TRANSLATE на Java, но, может, кто-то это уже сделал? Или я какую-то тонкость не учёл?
...
Рейтинг: 0 / 0
17.06.2015, 11:12
    #38985533
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
юникод и TRANSLATE
Victor Metelitsa,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create function translate (
  str  varchar(4000)
, to   varchar(4000)
, from varchar(4000)
)
returns varchar(4000)
contains sql
deterministic
no external action
return 
xmlcast(
xmlquery('fn:translate($s, $o, $r)' passing 
  str  as "s"
, from as "o"
, to   as "r"
)
as varchar(4000));

set path = USER, SYSTEM PATH;

values(translate('WЯWЯ','Я','W'));
...
Рейтинг: 0 / 0
17.06.2015, 12:33
    #38985682
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
юникод и TRANSLATE
Mark Barinstein,
спасибо!
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / юникод и TRANSLATE / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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