Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / decode / 7 сообщений из 7, страница 1 из 1
09.04.2020, 17:58
    #39945526
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
decode
Функция decode используется в oracle, может есть такая же для PostgreSQL? Нужен чтобы листинг такой же был как и у decode
Код: sql
1.
DECODE( expression , search , result [, search , result]… [, default] )
...
Рейтинг: 0 / 0
09.04.2020, 20:53
    #39945588
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
decode
неужели никто не знает функции которую можно использовать? case же я не смогу использовать в секции whare
...
Рейтинг: 0 / 0
09.04.2020, 21:59
    #39945607
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
decode
neteurt
case же я не смогу использовать в секции whare

Можете
...
Рейтинг: 0 / 0
09.04.2020, 23:46
    #39945642
grgdvo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
decode
см. расширение orafce. Вроде там ее реализовали также, как она работает в oracle.
...
Рейтинг: 0 / 0
10.04.2020, 09:16
    #39945698
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
decode
Павел Лузанов, как?
...
Рейтинг: 0 / 0
10.04.2020, 09:26
    #39945699
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
decode
neteurt,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
postgres=# select * from (values (0),(1),(2)) t(c) 
where case when t.c = 0 then false 
           when t.c = 1 then true 
           else false 
      end;
 c 
---
 1
(1 row)
...
Рейтинг: 0 / 0
10.04.2020, 12:35
    #39945795
Victor Nevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
decode
neteurt, свою нарисуйте, типа такого ...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR REPLACE FUNCTION decode(VARIADIC anyarray) 
  RETURNS anyelement LANGUAGE sql AS
$BODY$
with a as (select $1 as v),
     b as (select case when array_upper(v, 1)%2=0 
                  then v[2:array_upper(v, 1)-1] 
                  else v[2:array_upper(v, 1)] 
                   end as a,
             case when array_upper(v, 1)%2=0 
                  then v[array_upper(v, 1)] 
                   end as d,
                  v[1] as v
            from a)
select coalesce((select a[i+1] from (select generate_series(1, array_upper(a, 1),2)) i(i) where a[i] = v), b.d) from b
$BODY$;
SELECT h, 
       decode(h::varchar, '1', 'I', '2', 'II', '3', 'III', '10', 'X', '24', 'XII', 'zz'),
       to_char(decode(h%12, 0, 12, h%12), 'RN')
  FROM generate_series(1,24) t (h);


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 h  | decode |     to_char
----+--------+----------------
  1 | I      |               I
  2 | II     |              II
  3 | III    |             III
  4 | zz     |              IV
  5 | zz     |               V
  6 | zz     |              VI
  7 | zz     |             VII
  8 | zz     |            VIII
  9 | zz     |              IX
 10 | X      |               X
 11 | zz     |              XI
 12 | zz     |             XII
 13 | zz     |               I
 14 | zz     |              II
 15 | zz     |             III
 16 | zz     |              IV
 17 | zz     |               V
 18 | zz     |              VI
 19 | zz     |             VII
 20 | zz     |            VIII
 21 | zz     |              IX
 22 | zz     |               X
 23 | zz     |              XI
 24 | XII    |             XII
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / decode / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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