2015-10-01 4 views
1

Я новичок в PostgreSQL, я использую array типа в PostgreSQLPostgreSQL литой массив двумерный

WITH intarr AS (
    SELECT 
     ARRAY [ s.days,s.hours ] ::int[] AS arr 
    FROM summary s 
    WHERE s.hours != 2 
) 
SELECT ARRAY(SELECT * from intarr); 

Я получаю эту ошибку:

[Err] ERROR: could not find array type for data type integer[]

Я считаю изменение путь

ARRAY [ s.days,s.hours ] ::int[] AS arr 

строка к этому

ARRAY [ s.days,s.hours ] ::varchar AS arr 

Я получаю результат как: {"{1,3}","{2,3}"}. Но мне нужен результат int[][]. Как конвертировать one-dimensional array в two-dimensional array

+0

Я сделал это, но я не знаю, это хорошее решение? 'SELECT replace ((SELECT ARRAY (SELECT arr from intarr) :: VARCHAR), '' ',' ') :: int [] []' – user527

ответ

1

Я использую его сейчас, я не думаю, что это идеальный способ.

WITH intarr AS (
    SELECT 
     ARRAY [ s.days,s.hours ] ::VARCHAR AS arr 
    FROM 
     summary s 
    WHERE 
     s.hours != 2 
) 
SELECT replace((SELECT ARRAY(SELECT arr from intarr)::VARCHAR), '"', '')::int[][] 
Смежные вопросы