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

Откуда: Krasnoyarsk
Сообщений: 62
Как проще выбрать записи которые содержат нулевые и не нулевые значение, в одном поле с разделителями
и убрать нулевые значения

$-это разделитель Допустим есть
   Начальные данные                 Результат
id      data                               id      data     
1       1$0$2$                           1        1$2$   
2       1$5$
3       0$0$
30 май 11, 17:36    [10733861]     Ответить | Цитировать Сообщить модератору
 Re: выборка с одним полем  [new]
Corner
Member

Откуда:
Сообщений: 1270
SQL> with t as
  2  (
  3  select 1 a, '1$0$2$' b from dual
  4  union
  5  select 2 a, '1$5$' b from dual
  6  union
  7  select 3 a, '0$0$' b from dual)
  8  select a, replace(b,'0$','') b  from t
  9  where replace(b,'0$','') is not null
 10    and replace(b,'0$','')<>b;

         A B
---------- ------
         1 1$2$
30 май 11, 17:42    [10733931]     Ответить | Цитировать Сообщить модератору
 Re: выборка с одним полем  [new]
php_vasia
Member

Откуда: Krasnoyarsk
Сообщений: 62
а что если перед этим числом есть еще вот так

  Начальные данные                 Результат
id      data                                        id      data     
1       a;1$b;0$c;2$                           1       a;1$c;2$   
2       a;1$e;5$
3       r;0$g;0$
30 май 11, 18:28    [10734247]     Ответить | Цитировать Сообщить модератору
 Re: выборка с одним полем  [new]
AmKad
Member

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

+
with s as (
select  1 id,      'a;1$b;0$c;2$' str from dual union all
select  2 id,      'a;1$e;5$'     str from dual union all
select  3 id,      'r;0$g;0$'     str from dual union all
select  4 id,      '0r;6$g;4$'    str from dual union all
select  5 id,      '0r;0$g;0$'    str from dual
)
select str, regexp_replace(str, '(\D+|^)0', '') st
from s
where regexp_like(str, '(\D+|^)0') and regexp_like(str, '[1-9]');
30 май 11, 18:51    [10734369]     Ответить | Цитировать Сообщить модератору
 Re: выборка с одним полем  [new]
php_vasia
Member

Откуда: Krasnoyarsk
Сообщений: 62
есть такие данные где ноль еще может быть и таким

  Начальные данные                 Результат
id      data                                        id      data     
1       a;1$b;0.0000$c;2$                           1       a;1$c;2$   
2       a;1$e;5$
3       r;0.0$g;0.000$
хотел попробовать через FOR(что бы получить ноль как число) сделать но не получается
31 май 11, 19:05    [10741197]     Ответить | Цитировать Сообщить модератору
 Re: выборка с одним полем  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
php_vasia
есть такие данные где ноль еще может быть и таким

  Начальные данные                 Результат
id      data                                        id      data     
1       a;1$b;0.0000$c;2$                           1       a;1$c;2$   
2       a;1$e;5$
3       r;0.0$g;0.000$
хотел попробовать через FOR(что бы получить ноль как число) сделать но не получается

матчасть учите.
with s as ( select 1 id   ,'a;1$b;0.0000$c;2$' str from dual
  union all select 2      ,'a;1$e;5$'              from dual
  union all select 3      ,'r;0.0$g;0.000$'        from dual
)
select str  , regexp_replace( str, '[^;$]+;[0.]+\$') st
  from s
 where nullif(regexp_replace( str, '[^;$]+;[0.]+\$') ,str) is not null;
31 май 11, 20:06    [10741421]     Ответить | Цитировать Сообщить модератору
 Re: выборка с одним полем  [new]
-2-
Member

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

Сколько постов перед этим было написано, чтобы научиться класть в базу поля в одну строку с разделителями?!
31 май 11, 20:17    [10741463]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить