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

Откуда:
Сообщений: 100
Добрый день, подскажите как обрезать символы в строке
Есть строка вида "1.11102" нужно обрезать символы после точки(.) идущие после нуля т.е. должно получится "1.111"
Изначально сделал такой вариант
select round('1.11102', length(rtrim('1.11102', '0'))) from dual;

он работал на строке "1.1110"
13 мар 19, 11:34    [21831098]     Ответить | Цитировать Сообщить модератору
 Re: Обрезать символы в строке  [new]
alwan
Member

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

with tab as (select '1.11102' n from dual)
 select substr(n,1,instr(n,'0',instr(n,'.'))-1) from tab 
13 мар 19, 11:47    [21831115]     Ответить | Цитировать Сообщить модератору
 Re: Обрезать символы в строке  [new]
Щукина Анна
Member

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

что должно быть на выходе если на входе будет строка '1.10101'
13 мар 19, 11:51    [21831121]     Ответить | Цитировать Сообщить модератору
 Re: Обрезать символы в строке  [new]
petrovichvanya
Member

Откуда:
Сообщений: 100
Щукина Анна,
"1.1"
13 мар 19, 11:54    [21831127]     Ответить | Цитировать Сообщить модератору
 Re: Обрезать символы в строке  [new]
petrovichvanya
Member

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

спасибо, то что нужно
13 мар 19, 11:56    [21831130]     Ответить | Цитировать Сообщить модератору
 Re: Обрезать символы в строке  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9422
petrovichvanya
спасибо, то что нужно


А что если дробной части или 0 в ней нет? Предложенный вариант вернет NULL. Так-что скорее всего:

with tab as (
             select '1.11102' n from dual union all
             select '1.11112' n from dual union all
             select '111102' n from dual
            )
select  n,
        substr(n,1,instr(n,'0',instr(n,'.'))-1) x,
        substr(n,1,instr(n || '0','0',instr(n || '.','.'))-1) y
  from  tab
/

N       X                            Y
------- ---------------------------- ----------------------------
1.11102 1.111                        1.111
1.11112                              1.11112
111102                               111102

SQL> 


SY.
13 мар 19, 14:27    [21831360]     Ответить | Цитировать Сообщить модератору
 Re: Обрезать символы в строке  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1786
petrovichvanya
alwan,

спасибо, то что нужно


SQL> ed
Wrote file afiedt.buf

  1  with tab as (select '111102' n from dual)
  2*  select substr(n,1,instr(n,'0',instr(n,'.'))-1) from tab
SQL> /

S
-


SQL>

?

....
stax
13 мар 19, 14:30    [21831364]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить