Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
Пишу условие
select
case
when lv3.code like 's' then substr(lv3.name,4)
when lv3.code like 'h' then substr(lv3.name,right(lv3.name,3))
end


при выполнении пишет ошибку - The format or data contains a bad character

Запрос должен при коде s удалять 4 символа справа а при h 3 слева.
не могу найти ошибку. Помогите...
19 окт 18, 11:00    [21708685]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 308
результат
select
case
when lv3.code like 'h' then right(lv3.name,3)
end

Даст вам намек
19 окт 18, 12:41    [21708941]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
Glebanski,

к примеру в поле Москва ФЛ,
right(lv3.name,3) выводит ' ФЛ'

намек не пойму
19 окт 18, 12:59    [21708990]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
Romanov-krd,

что возвращает right(lv3.name,3)? не думаю что число...
19 окт 18, 15:31    [21709258]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
WarAnt,

строку возвращает
19 окт 18, 16:46    [21709355]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
Romanov-krd
WarAnt,

строку возвращает
А что принимает вторым параметром substr?
19 окт 18, 17:07    [21709376]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
число принимает. что тогда можно использовать?
21 окт 18, 10:20    [21710095]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
Romanov-krd
число принимает. что тогда можно использовать?
Нужно использовать right вместо substr
21 окт 18, 12:51    [21710167]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
alexeyvg
Romanov-krd
число принимает. что тогда можно использовать?
Нужно использовать right вместо substr
А, вам же надо отрезать.
Тогда непонятно, почему вы так написали, substr(lv3.name,4) отрезает 4 символа слева, а не справа

Нужно так:
select
case
when lv3.code like 's' then substr(lv3.name,1, len(lv3.name)-4)
when lv3.code like 'h' then substr(lv3.name,3)
end
21 окт 18, 12:57    [21710168]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
alexeyvg,

А если нужно чтобы просто убирал символы слева например Москва ГМ, Ростов ГМ - оставлял только Москва, Ростов. символы ГМ везде одинаковы, можно что то наподобии trim использовать. только он не подходит
22 окт 18, 08:22    [21710663]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
Romanov-krd,

Справа убирал*
22 окт 18, 08:23    [21710664]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
Romanov-krd,

а да, понял как сделать. Но у меня почему то с кириллицей не работает пишет ошибку

[Error 6706] The string contains an untranslatable character

К сообщению приложен файл. Размер - 47Kb
22 окт 18, 09:02    [21710691]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
Romanov-krd,

Хотя с латинскими буквами все ок
22 окт 18, 09:02    [21710693]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
Romanov-krd
а да, понял как сделать. Но у меня почему то с кириллицей не работает пишет ошибку

[Error 6706] The string contains an untranslatable character
Ну, вы всё таки на форуме MSSQL, а не Teradata :-)
Может, там у вас есть что то вроде констант юникода, как в сиквеле, и вообще нужно знать, какие строковые типы бывают, в том числе типично используемые для не-английского; в общем, читайте документацию.
22 окт 18, 09:16    [21710702]     Ответить | Цитировать Сообщить модератору
 Re: не работает substr+right Teradata  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
Нашел. Вдруг кому то пригодится - вместо функции length используем character_length, тогда работает с кириллицей

select substr('Ростов ГМ',1,character_length('Ростов ГМ')-3
22 окт 18, 14:14    [21711076]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить