¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

5.12. ����

PostgreSQL �ϥơ��֥��������Ĺ¿����������Ȥ���������뤳�Ȥ��Ǥ��ޤ����ޤ�����¸�Υǡ�������桼����������������������뤳�Ȥ��ǽ�Ǥ����ºݤ�����λȤ��������������뤿��ˡ��Ĥ��Υơ��֥��������ޤ���

CREATE TABLE sal_emp (
    name            text,
    pay_by_quarter  integer[],
    schedule        text[][]
);

���Ƥ����Τ褦������ǡ��������������ǤΥǡ�������̾���˳å��å���[]�ˤ�Ĥ��ƻ��ꤷ�ޤ��� �嵭�Υ��ޥ�ɤ� text��ʸ���� (name)�����Ȱ��λ�Ⱦ���ε�Ϳ����¸���� integer ���ΰ켡������ (pay_by_quarter)�������ƽ��Ȱ��ν��֥������塼�����¸���� text �����󼡸����� (schedule) �������� sal_emp �Ȥ���̾���Υơ��֥��������ޤ���

����Ǥ� INSERT �򤤤��Ĥ��¹Ԥ��Ƥߤޤ��礦�� ��������Ǥ��ͤ��ɲä���ݤˤϤ������Ǥ��ͤ��楫�å��ǰϤߡ����줾������Ǥ��ͤ򥫥�ޤǶ��ڤäƤ��뤳�Ȥ����դ��Ƥ��������� C ������ΤäƤ���ʤ�С���¤�Τ��������뤿��ι�ʸ�Τ褦�ʤ�Τȹͤ��Ƥ���������

INSERT INTO sal_emp
    VALUES ('Bill',
    '{10000, 10000, 10000, 10000}',
    '{{"meeting", "lunch"}, {}}');

INSERT INTO sal_emp
    VALUES ('Carol',
    '{20000, 25000, 25000, 25000}',
    '{{"talk", "consult"}, {"meeting"}}');

����Ǥϡ�sal_emp ���Ф����䤤��碌��ԤäƤߤޤ��礦���ޤ������ˤҤȤĤ���������Ǥ˥����������뤷�����򼨤��ޤ��������䤤��碌����2��Ⱦ���˵������ѹ������ä����Ȱ���̾������Ф��ޤ���

SELECT name FROM sal_emp WHERE pay_by_quarter[1] <> pay_by_quarter[2];

 name
-------
 Carol
(1 row)

�����ź���ֹ�ϳä��ä��ǽ񤫤�ޤ��� �ǥե���Ȥ� PostgreSQL ��������Ф���1 �Ϥޤ�פ��ֹ��յ������Ѥ��Ƥ��ޤ����Ĥޤ����Ǥ� n �Ĥ�������� array[1] �ǻϤޤꡢarray[n] �ǽ����ޤ���

�����䤤��碌�Ϥ��٤Ƥν��Ȱ�����3��Ⱦ���ε�Ϳ����Ф��ޤ���

SELECT pay_by_quarter[3] FROM sal_emp;

 pay_by_quarter
----------------
          10000
          25000
(2 rows)

�ޤ���������������Ǥ�դΰ���ʬ����������Ȥ��ǽ�Ǥ��� 1 �����ʾ������ˤĤ�������ΰ�����񤯤ˤϡ�lower-bound:upper-bound �ȵ��Ҥ��ޤ��� �����䤤��碌�� Bill �Τ��ν��ν��� 2 �� �˺ǽ�ʤˤ�ͽ�ꤵ��Ƥ��뤫����Ф��ޤ���

SELECT schedule[1:2][1:1] FROM sal_emp WHERE name = 'Bill';

      schedule
--------------------
 {{meeting},{""}}
(1 row)

�ʲ��Τ褦�˽񤯤��Ȥ�Ǥ��ޤ���

SELECT schedule[1:2][1] FROM sal_emp WHERE name = 'Bill';

��̤�Ʊ���Ǥ��� �����ź�����Ф���黻�ϡ��ɤ줫�ҤȤĤǤ�ź���� lower:upper �Ȥ��������ǽ񤫤�Ƥ���ȡ�����ΰ�����ɽ���Ƥ�������ꤷ�ޤ��� 1 �Ĥ��ͤ��������ꤵ����硢Ǥ�դ�ź���ˤĤ��Ʋ��¤� 1 �Ȳ��ꤷ�ޤ���

������ͤ򤹤٤��֤������뤳�Ȥ��ǽ�Ǥ���

UPDATE sal_emp SET pay_by_quarter = '{25000,25000,27000,27000}'
    WHERE name = 'Carol';

�ޤ��� 1 �Ĥ����Ǥ򹹿����뤳�Ȥ��ǽ�Ǥ���

UPDATE sal_emp SET pay_by_quarter[4] = 15000
    WHERE name = 'Bill';

���뤤�ϰ���ʬ�ι������ǽ�Ǥ���

UPDATE sal_emp SET pay_by_quarter[1:2] = '{27000,27000}'
    WHERE name = 'Carol';

����ϡ����Ǥ�¸�ߤ��Ƥ����������Ǥ�ľ�塢�⤷���ϥǡ��������Ǥ����äƤ�������ΰ���ʬ�˾��/�������뤳�Ȥˤ�ä�������礭�����ѹ��Ǥ��ޤ������Ȥ��С���������Ǥ����� 4 �Ĥ���Ȥ���array[5] ����ꤹ��Ȥ�����������Ǥ� 5 �Ĥˤʤ�ޤ������ߤǤϡ����Τ褦������γ�ĥ�� 1 ��������ǤΤ߲�ǽ�ȤʤäƤ��ơ�¿��������ǤϤǤ��ޤ���

����ΰ����λ���� 1 �Ϥޤ�ʳ���ź���������������ޤ����㤨��ź���� -2 ���� 7 �ޤǤ��ͤ�������� array[-2:7] �ǻ���Ǥ��ޤ���

CREATE TABLE �ι�ʸ�Ǹ���Ĺ�����������Ǥ��ޤ���

CREATE TABLE tictactoe (
    squares   integer[3][3]
);

�ȤϤ��äƤ⸽�ߤμ����Ǥϡ�����κ��祵�������פ��ޤ��� �礭������ꤷ�Ƥ��ʤ������Ʊ��ư��ˤʤ�ޤ���

�ºݤˤϡ����ߤμ����Ǥϼ���������⶯�פ��ޤ���������礭���伡�����ˤ�����餺����������δ��ܷ�������Ϥ��٤�Ʊ�����Ǥ���Ȥߤʤ���ޤ����Ǥ����鼡���Ȥ��礭���ο��� CREATE TABLE ��������Ȥ��Ƥ⤽���ñ�ʤ뵭�Ҥˤ��������¹Ի��ο���˱ƶ���Ϳ���ޤ���

array_dims �ؿ���Ǥ�դ������ͤθ��ߤμ�������Ф��ޤ���

SELECT array_dims(schedule) FROM sal_emp WHERE name = 'Carol';

 array_dims
------------
 [1:2][1:1]
(1 row)

array_dims �ؿ��ϡ�text ���Ƿ�̤��֤��ޤ��� �ʹ֤���̤򸫤뤿��ˤ������Ǥ������ץ������ˤȤäƤϤ��ޤ�ͭ���ǤϤʤ����⤷��ޤ���

������Ǥ����ͤ򸡺�����ˤϡ���������Ǥ��٤Ƥ򸡺�����ɬ�פ�����ޤ����⤷������礭�����狼�äƤ���ʤ�м��ȤǤ⸡���Ǥ��ޤ���

SELECT * FROM sal_emp WHERE pay_by_quarter[1] = 10000 OR
                            pay_by_quarter[2] = 10000 OR
                            pay_by_quarter[3] = 10000 OR
                            pay_by_quarter[4] = 10000;

�ȤϤ��äƤ⤳����ˡ�Ǥ��礭������Ǥ����Ѥʺ�ȤȤʤ�ޤ�����������礭���������ʾ�礳����ˡ��¹ԤǤ��ޤ���PostgreSQL ��ɸ������ʪ�����äƤ��ʤ��ȤϤ��äƤ⡢�����ͤ��Ф��Ʒ����֤�������Ԥ��������ؿ���黻�Ҥ���������ĥ���Ȥ��ޤ�����������Ѥ��ơ������ۤɤ��䤤��碌��ʲ��Τ褦�˽񤯤��Ȥ��Ǥ��ޤ���

SELECT * FROM sal_emp WHERE pay_by_quarter[1:4] *= 10000;

�����(�������Τߤ����ǤϤʤ�)���٤Ƥ����Ǥ򸡺�����ˤϤĤ��Τ褦�ˤ��ޤ���

SELECT * FROM sal_emp WHERE pay_by_quarter *= 10000;

������ͤ� 10,000 �Ȱ��פ�������ιԤⲼ���Τ褦���Ƹ����Ǥ��ޤ���

SELECT * FROM sal_emp WHERE pay_by_quarter **= 10000;

���Υ��ץ����⥸�塼��򥤥󥹥ȡ��뤹��ˤ� PostgreSQL �Υ������ǥ����ȥ�ӥ塼������ contrib/array �ǥ��쥯�ȥ�򻲾Ȥ��Ƥ���������

Tip: ����Ͻ���ǤϤ���ޤ��� �������Τ褦���������Ѥ��ʤ���Фʤ�ʤ��Ȥ��ϡ����Ƥ��ƥǡ����١������߷ץߥ��Ǥ����ǽ�����礭���Ȥ������ȤǤ�������Υե�����ɤϰ���Ū�ˤϤ��줾��㤦�ơ��֥�Ǥ���٤��Ǥ����ơ��֥�����餫�˸�������Τ������Ǥ���

Note: �������Ǥ���������θ³��ϸġ�����������Ǥ� SQL �� null �ͤǤ��äƤϤʤ�ʤ����ȤǤ��� �������Τ� null �����ꤹ�뤳�ȤϤǤ��ޤ�������������Ǥ� null �� null �Ǥʤ���Τ򺮺ߤ����뤳�ȤϤǤ��ޤ��󡣤�������β��� TO-DO �ꥹ�Ȥ˵󤲤Ƥ���ޤ���

���������Ϲ�ʸ. ������ͤγ���ɽ������������Ǥη����Ф��� I/O �Ѵ��롼��˴�Ť����������줿���ܤ�����ι�¤�򼨤��������ܤǹ�������Ƥ��ޤ���������������ͤ��楫�å� ({ and }) �ǰϤ����ΤȤĤ��ι��ܤȤδ֤���ڤ�ʸ���Ƕ��ڤä���ΤǤ������ڤ�ʸ�����̾參��� (,) �Ǥ����ۤ���ʸ���Ǥ⤫�ޤ��ޤ�����������Ǥη� typdelim �����ꤹ�뤳�ȤǷ�ޤ�ޤ��� (PostgreSQL ����ʪ�ˤ�����ɸ��Υǡ���������� box ���ϥ��ߥ����� (;) ��Ȥ��ޤ������Τۤ����٤Ƥϥ���ޤ�ȤäƤ��ޤ���)¿��������ǤϤ��줾��μ���(���̡�Ω�Τʤ�)�Ϥ��켫�Ȥγ��ؤˤ������楫�å��ȡ�Ʊ�����ؤ��楫�å��dz��줿�Ĥ��β��Ȥδ֤˶��ڤ�ʸ�����񤫤�Ƥ��ʤ��ƤϤ����ޤ��󡣥��å��κ�¦�䱦¦�����塢���뤤����Ω�����ɤ��ʸ����ι��ܤ����ˤ˶��������Ƥ⤫�ޤ��ޤ��� ���ܤθ���������줿�����̵�뤵��ޤ��󤬡�������ɤ����Ф�����ǤϤĤ��α����å������ڤ�ʸ�������ޤǤΤ��٤ƤϹ��ܤ��ͤȸ��ʤ���ޤ���

�������Ǥΰ���. ��Ǽ������褦��������ͤ򵭺ܤ���Ȥ��Ϥ��٤Ƥθ��̤��������Ǥ���ť��å��dz��ʤ���Фʤ�ޤ��󡣤⤷��������ͤ�������ͤι�ʸ���Ϥ˺����Ϳ����褦�Ǥ���� ɬ�����Τ褦�ˤ��ʤ���Фʤ�ޤ����㤨���楫�å��䥫���(���뤤�Ϥɤ�ʶ��ڤ�ʸ���Ǥ�)����ť��å����ե���å��夢�뤤�϶��������դ��Ƥ������Ǥ���ť��å��dz���ʤ���Фʤ�ޤ����������Ǥ������ť��å�������������Ϥ������˵ե���å�����դ��ޤ����̤������Ȥ�������ʸ�ȤȤ館��줽���ʤ��٤ƤΥǡ���ʸ�����ݸ��������̵�뤷�Ƥ�褤����Τ���ˤϵե���å��奨�������פ�Ȥ��ޤ���

����ʸ������楫�å�����ڤ�ʸ������ť��å����ե���å��夢�뤤�϶��򤬴ޤޤ�Ƥ�������Ǥ��ͤ�������Ͻ�������ť��å��dz���ޤ������Ǥ��ͤ��Ȥ߹��ޤ�Ƥ�����ť��å��ȵե���å���ϵե���å��奨�������פ���ޤ��� ���ͥǡ��������Ф��Ƥ���ť��å����и����ʤ������ꤹ��Τ������Ǥ������ƥ����ȥǡ������ξ����Ѥ�������Ȥʤ������н�Ǥ���褦�ˤ��Ƥ����٤��Ǥ���(����� PostgreSQL ��꡼�� 7.2 ��������ο�����ѹ��Ǥ���

Tip: SQL ���ޥ�ɤǽ񤤤���ΤϤޤ���ƥ��ʸ������������졢�����ĤŤ����������������뤳�Ȥ�פ��Ф��Ƥ���������ɬ�פȤʤ�ե���å���ο�����������ޤ����㤨�еե���å������ť��å������� text �������ͤ���������ˤϤĤ��Τ褦�˽񤫤ʤ���Фʤ�ޤ���

INSERT ... VALUES ('{"\\\\","\\""}');

ʸ�����ƥ��ץ����å��������͹�ʸ���Ϥ��Ϥ��줿�Ȥ� {"\\","\""} �Τ褦�˸�����褦�ˤ��뤿��Ϥ�εե���å����������ޤ�����������Ȥ��� text �ǡ��������Ͻ�����Ϳ������ʸ����Ϥ��줾�� \ �� " �ˤʤ�ޤ��� (���Ȥ��� bytea �Τ褦�ˡ����Ͻ����ǵե���å�������̤˰����ǡ���������Ѥ���ȡ���¸����Ƥ����������ǤˤҤȤĤεե���å�����������뤿��ˡ����ޥ�ɤ� 8 �Ĥ�εե���å��夬ɬ�פˤʤ뤳�Ȥ�����ޤ���)