помогите с запросом

kkv79
Дата: 05.03.2015 05:00:11
есть таблица с двумя полями
в первом поле id, во втором массив integer[] (элементы массива здесь через точку с запятой, т.к. по другому не получилось оформить в виде таблицы)
id int_arr
1{1;5;104}
2{2;7;40}


нужно сделать выборку строк, в массивах которых, есть значения больше 100, т.е. первую строку (значение 104>100)

хелп!!!
Artem_Nav
Дата: 05.03.2015 09:51:44
select t.*
from t,generate_series(1,array_upper(t.arr,1)) as i
where t.arr[i]>100
этта
Дата: 05.03.2015 12:12:48
kkv79,

WITH t(id , keys) AS (VALUES
(1,ARRAY[1,5,104])
,(2,ARRAY[2,7,40])
)
SELECT * FROM t WHERE 100<ANY(keys)


PS таки вернитесь к нормализованным реляционным структурам. А все навороты (и когда они уместны) -- потом.
Ы
Дата: 05.03.2015 14:51:31
Artem_Nav
select t.*
from t,generate_series(1,array_upper(t.arr,1)) as i
where t.arr[i]>100

Для этого специально придумали generate_subscripts, но можно проще: where 100 < any (int_arr)
Artem_Nav
Дата: 05.03.2015 15:28:04
Ы, век живи, век учись :) Спасибо, использую.