powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Teradata - Instr проблема с кирилицей
2 сообщений из 2, страница 1 из 1
Teradata - Instr проблема с кирилицей
    #38972947
MalikO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа,
нужно выдергивать из строки 5 фраз, который начинаются со слова-ключа и заканчиваются спецсимволом ';'

В Teradata для этого есть функция instr, но при парсинге кириллицы, запрос падает с ошибкой.

Как быть? И, возможно, есть более красивый способ парсинга?

Пример
select instr('деп: sdasda;na','деп',1)

Ошибка:
Error: [Teradata Database] [TeraJDBC 13.10.00.01] [Error 6706] [SQLState HY000] The string contains an untranslatable character.
SQLState: HY000
ErrorCode: 6706

П.С.
Рабочий запрос
with s as
(
select 'zap: sdasda;nap:sda;op:sdasd;zap:adsasda;otv:asder;ty' CommentString, 'zap' zap, 'dep' dep, 'op' op, 'nap' nap, 'otv' otv
)
select
CommentString,
substr(CommentString,instr(CommentString,zap,1),instr(CommentString,';',instr(CommentString,zap))-instr(CommentString,zap,1)) zap,
substr(CommentString,instr(CommentString,dep,1),instr(CommentString,';',instr(CommentString,dep))-instr(CommentString,dep,1)) dep,
substr(CommentString,instr(CommentString,op,1),instr(CommentString,';',instr(CommentString,op))-instr(CommentString,op,1)) op,
substr(CommentString,instr(CommentString,nap,1),instr(CommentString,';',instr(CommentString,nap))-instr(CommentString,nap,1)) nap,
substr(CommentString,instr(CommentString,otv,1),instr(CommentString,';',instr(CommentString,otv))-instr(CommentString,otv,1)) otv
from s
;
...
Рейтинг: 0 / 0
Teradata - Instr проблема с кирилицей
    #38973087
MalikO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С insert какая то бага...

Решил задачу с регулярными выражениями, может пригодиться.

with s as
(
select
'Заказчик: Иванов.И.И;Исполнитель: Сидоров В.В.;Описание: бла-бла' CommentString
)
select
cast(regexp_substr(CommentString,'((Заказчик:)+.*?)+(;|\Z)') as varchar(100)) zak,
cast(regexp_substr(CommentString,'((Исполнитель:)+.*?)+(;|\Z)') as varchar(200)) dep,
cast(regexp_substr(CommentString,'((Описание:)+.*?)+(;|\Z)') as varchar(1000)) op
from s
;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Teradata - Instr проблема с кирилицей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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