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

Откуда:
Сообщений: 163
Всем привет!
Подскажите, как сделать???
Есть таблица, в которой например колонка содержит следующие данные:
7800009
7910000
10000011
321345000
900076

Мне нужно вытащить следующее:
78000
79100
100000
3213450
9000

Тобишь удалить 2 последних символа. Функция substr что-то мне не помогла...не нашел в ней решения моей проблемы.

Подскажите, как решить эту проблему?
25 янв 11, 17:23    [10129027]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Elic
Member

Откуда:
Сообщений: 29980
Игорь86
Функция substr что-то мне не помогла...не нашел в ней решения моей проблемы.
RTFM If position is negative (FAQ)
25 янв 11, 17:27    [10129063]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Elic
Member

Откуда:
Сообщений: 29980
Elic
RTFM If position is negative (FAQ)
Решение для сабжа :)
25 янв 11, 17:29    [10129072]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Игорь86,
Посмотрите еще функцию LENGTH.
Используя её вместе с SUBSTR, вы достигните желаемого результата...
25 янв 11, 17:29    [10129075]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Игорь86
Member

Откуда:
Сообщений: 163
Elic
Игорь86
Функция substr что-то мне не помогла...не нашел в ней решения моей проблемы.
RTFM If position is negative (FAQ)


И где там инфа?
Я там не нашел решения.
25 янв 11, 17:30    [10129077]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
Elic
Решение для сабжа :)
При чем здесь это? Ему достаточно substring(col,1,length(col)-2).
25 янв 11, 17:30    [10129078]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
dbms_photoshop
substr(col,1,length(col)-2)
25 янв 11, 17:31    [10129083]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Игорь86
Member

Откуда:
Сообщений: 163
dbms_photoshop
dbms_photoshop
substr(col,1,length(col)-2)

сейчас попробую
25 янв 11, 17:33    [10129095]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Игорь86
Member

Откуда:
Сообщений: 163
А если тип колонки NUMBER?
25 янв 11, 17:39    [10129128]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Игорь86
А если тип колонки NUMBER?

with s as(
select '7800009'    str from dual union all
select '7910000'    str from dual union all
select '10000011'   str from dual union all
select '321345000'  str from dual union all
select '900076'     str from dual)
select s.*,
trunc(str/100) tr,
regexp_replace(str, '(\d+)(\d{2})', '\1') rp
from s
25 янв 11, 17:40    [10129136]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
Игорь86
А если тип колонки NUMBER?
Это в корне меняет дело.
SQL> create table tututu as select 7800009 value from dual union all select 7910000 from dual;
 
Table created
SQL> desc tututu;
Name  Type   Nullable Default Comments 
----- ------ -------- ------- -------- 
VALUE NUMBER Y                         
SQL> SELECT substr(value,1,length(value)-2) from tututu;
 
SUBSTR(VALUE,1,LENGTH(VALUE)-2
----------------------------------------
78000
79100
25 янв 11, 17:42    [10129155]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
AmKad
Member

Откуда:
Сообщений: 5222
regexp_replace(str, '(\d{2})$', '') rp
25 янв 11, 17:43    [10129157]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Игорь86
Member

Откуда:
Сообщений: 163
AmKad
Игорь86
А если тип колонки NUMBER?

with s as(
select '7800009'    str from dual union all
select '7910000'    str from dual union all
select '10000011'   str from dual union all
select '321345000'  str from dual union all
select '900076'     str from dual)
select s.*,
trunc(str/100) tr,
regexp_replace(str, '(\d+)(\d{2})', '\1') rp
from s


Честно, ничего не понял.

У меня есть колонка типа NUMBER.
Как из нее вытащить значения без последних 2-х символов
25 янв 11, 17:43    [10129159]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Игорь86,

SQL> with t as (select 7800009 as a from dual union all
  2  select 7910000 as a from dual union all
  3  select 10000011 as a from dual union all
  4  select 321345000 as a from dual union all
  5  select 900076 as a from dual)
  6  select a, REGEXP_REPLACE(a,'[[:digit:]]{2}$','') as reg from t;

         A REG
---------- ----------
   7800009 78000
   7910000 79100
  10000011 100000
 321345000 3213450
    900076 9000
25 янв 11, 17:45    [10129178]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
Игорь86
Честно, ничего не понял.
Ты думать не пробовал?
з.ы. Без обид.
25 янв 11, 17:46    [10129185]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Игорь86
Member

Откуда:
Сообщений: 163
dbms_photoshop
Игорь86
Честно, ничего не понял.
Ты думать не пробовал?
з.ы. Без обид.


Пробовал...Не понимаю...
Я не такой уж и профи в SQL
25 янв 11, 17:47    [10129198]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Игорь86
Member

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

Что-то у меня ничего не получается(
25 янв 11, 17:49    [10129221]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Игорь86
Я не такой уж и профи в SQL

Не уметь "убрать 2 последних символа в значении типа number" - это незнание арифметики.
25 янв 11, 17:50    [10129226]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Игорь86
Member

Откуда:
Сообщений: 163
AmKad
Игорь86
Я не такой уж и профи в SQL

Не уметь "убрать 2 последних символа в значении типа number" - это незнание арифметики.


Я так понимаю у тебя арифметика на 5+

Так подскажи тому у кого 2
25 янв 11, 17:51    [10129242]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
Elic
Member

Откуда:
Сообщений: 29980
dbms_photoshop
Elic
Решение для сабжа :)
При чем здесь это?
"Далее следует произведение, никак не связанное с эпиграфом, как и положено в большой литературе." (с)
25 янв 11, 17:53    [10129261]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Игорь86
Я так понимаю у тебя арифметика на 5+

Ну плюс мне в аттестат и диплом не поставили
А так держи TRUNC (number)
25 янв 11, 17:55    [10129273]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
а также:
floor(чё_там/100)
25 янв 11, 18:49    [10129658]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
orawish
а также:
floor(чё_там/100)

для целых, неотрицательных, знамо
25 янв 11, 18:50    [10129672]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
AmKad
Member

Откуда:
Сообщений: 5222
(n - mod(n, 100)) / 100
25 янв 11, 19:03    [10129763]     Ответить | Цитировать Сообщить модератору
 Re: 2 последних символа  [new]
AmKad
Member

Откуда:
Сообщений: 5222
trunc(n, -2) / 100
25 янв 11, 19:04    [10129775]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить