Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Извлечение элементов массива / 9 сообщений из 9, страница 1 из 1
01.06.2006, 17:48
    #33766920
judas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
Есть одномерный массив.
Необходимо развернуть его во временную табличку.

Для наглядности (запрос не рабочий):

авторSELECT * INTO TEMPORARY TABLE objects
FROM '{1,2,3}'::int4[]
Хочу, чтобы в той табличке оказались следующие записи: 1, 2 и 4.

Как это сделать?
...
Рейтинг: 0 / 0
01.06.2006, 17:49
    #33766929
judas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
Блин!

Хочу, чтобы в той табличке оказались следующие записи: 1, 2 и 3.
...
Рейтинг: 0 / 0
01.06.2006, 19:23
    #33767237
ZemA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
простым запросом это не решить, но можно через хп
вот тут посмотри http://sql.ru/forum/actualthread.aspx?tid=201552
...
Рейтинг: 0 / 0
02.06.2006, 04:46
    #33767569
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
judasКак это сделать?Как вариант - конвертнуть массив в строку, а потом просто распарсить строку на составляющие. :)
...
Рейтинг: 0 / 0
02.06.2006, 04:50
    #33767570
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
ZemAпростым запросом это не решитьПочему же??? Можно и запросом, хотя, твоя правда, он будет далеко не порстой...
...
Рейтинг: 0 / 0
02.06.2006, 12:11
    #33768297
-me-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
Код: plaintext
1.
2.
3.
4.
create or replace function expand_array ( anyarray ) returns setof anyelement  as $$
select  $ 1 [idx] from
(select generate_series(array_lower($ 1 , 1 ),array_upper($ 1 , 1 )) as idx) as foobarbaz;
$$ language 'sql';
...
Рейтинг: 0 / 0
02.06.2006, 12:12
    #33768302
-me-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
вызывать так:
Код: plaintext
select * from expand_array('{a,b,c,d,r}'::text[]);
...
Рейтинг: 0 / 0
02.06.2006, 15:52
    #33769185
ZemA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
-me-
Код: plaintext
1.
2.
3.
4.
create or replace function expand_array ( anyarray ) returns setof anyelement  as $$
select  $ 1 [idx] from
(select generate_series(array_lower($ 1 , 1 ),array_upper($ 1 , 1 )) as idx) as foobarbaz;
$$ language 'sql';

можно обойтись без вложенного запроса
Код: plaintext
1.
2.
3.
4.
create or replace function expand_array ( anyarray ) returns setof anyelement as $$
select $ 1 [idx]
  from generate_series(array_lower($ 1 , 1 ), array_upper($ 1 , 1 )) as gs(idx);
$$ language 'sql';
...
Рейтинг: 0 / 0
02.06.2006, 16:21
    #33769369
ZemA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение элементов массива
пара вариантов для 7.4
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
CREATE OR REPLACE FUNCTION expand_array(anyarray)
  RETURNS setof anyelement AS
'
declare
  array_in ALIAS FOR $1;
  i integer;
begin
  i := 1;

  WHILE array_in[i] is not null LOOP
    return next array_in[i];
    i := i+1;
  END LOOP;  

  return;
end;
'
  LANGUAGE 'plpgsql' VOLATILE;

----------------------------------------------------------------

CREATE OR REPLACE FUNCTION expand_array(anyarray)
  RETURNS setof anyelement AS
'
declare
  array_in ALIAS FOR $1;
  i integer;
begin
  FOR i IN array_lower(array_in,1)..array_upper(array_in,1) LOOP
    return next array_in[i];
  END LOOP;  

  return;
end;
'
  LANGUAGE 'plpgsql' VOLATILE;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Извлечение элементов массива / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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