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

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

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

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

Хочу, чтобы в той табличке оказались следующие записи: 1, 2 и 3.
...
Рейтинг: 0 / 0
Извлечение элементов массива
    #33767237
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простым запросом это не решить, но можно через хп
вот тут посмотри http://sql.ru/forum/actualthread.aspx?tid=201552
...
Рейтинг: 0 / 0
Извлечение элементов массива
    #33767569
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
judasКак это сделать?Как вариант - конвертнуть массив в строку, а потом просто распарсить строку на составляющие. :)
...
Рейтинг: 0 / 0
Извлечение элементов массива
    #33767570
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZemAпростым запросом это не решитьПочему же??? Можно и запросом, хотя, твоя правда, он будет далеко не порстой...
...
Рейтинг: 0 / 0
Извлечение элементов массива
    #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
Извлечение элементов массива
    #33768302
-me-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вызывать так:
Код: plaintext
select * from expand_array('{a,b,c,d,r}'::text[]);
...
Рейтинг: 0 / 0
Извлечение элементов массива
    #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
Извлечение элементов массива
    #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
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Извлечение элементов массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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