배열사용할때..메뉴얼에 나온거 보니까..
CREATE TABLE SAL_EMP (
name text,
pay_by_quarter int4[],
schedule text[][]
);
이렇게 테이블 만들고,데이터 형을 배열로 선언한 후에...
INSERT INTO SAL_EMP
VALUES ('Bill','{10000, 10000, 10000, 10000}',
'{{"meeting", "lunch"}, {}}');
이렇게 데이터 넣구요...
SELECT SAL_EMP.schedule[1:2][1:1] FROM SAL_EMP
WHERE SAL_EMP.name = 'Bill';
이런 쿼리를 던지면
왜????
+///////////////////+
|schedule |
+///////////////////+
|{{"meeting"},{""}} |
+///////////////////+
이렇게 결과가 나오는 지 모르겠네요...
제 생각으로는 2차배열([][])에서 앞쪽 건([1:2]) 둘중에 앞에거 하고,
뒤에건([1:1]) 하나에서 앞에거 하나만 나오니까 널값이 나오는지요??? 제가 써 놓고도 헷갈리네요...
제가 연습해보니까 1차원배열([])로 선언해 놓고,{a,b}로 insert한 후에 앞에 있는 건만 query할려고,
[1:2]로 하니까 {a,b}둘다 나오더라구요... 첨엔 예감으로 앞에건만 나올줄 알았는데,
결과가 {a,b}로 나오면서 조건에 맞지 않는건 (예를 들면 데이터를 하나만 입력했거나,입력하지 않은것)
공백으로 출력되면서 {a,b}가 출력됐습니다. 물론 rows 수도 공백까지 세가지고 나왔습니다...
예를 들면,보여지는 데이터는 1개인데,공백있고,rows 수는 8로 나오더군요...
...이게 어떻게 된건지,그때 부터 헤리기 시작했습니다..
1차원배열때는 뭔가 틀리나요?
메뉴얼 보면서 할라니까 넘 빡빡하네요...C에서 배열을 보긴 봤는데...
도통 기초가 없다보니까 모르겠어요..
괄호부터 어떻게 해서 이런값이 나오나 자세히 설명좀 해주십시요...
|