¾�ΥС�������ʸ�� �� 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

9.17. ��P

����Ǥ�PostgreSQL�ǻ��Ѳ�ǽ��SQL���ξ�P�ˤĤ����������ޤ���

ティップ: ���������������P���ȯŸ������ǽ�������ϡ����ɽ����˭�٤ʥץ���������ǥ��ȥ��ɥץ���������򵭽Ҥ��뤳�ȤDz�褵��ޤ���

9.17.1. CASE

SQL��CASE����¾�Υץ�����ߥ󥰸����if/else��ʸ������������Ѿ�P�Ǥ���

CASE WHEN condition THEN result
     [WHEN ...]
     [ELSE result]
END

CASE��ϼ���ͭ���ʰ��֤Ǥ���Фɤ��Ǥ���Ѳ�ǽ�Ǥ������줾���condition�Ȥ�boolean���η�̤��֤����Ǥ����⤷condition�η�̤����Ǥ���С�CASE�����ͤϡ�condition��³��result�Ȥʤ�ޤ��� �����ơ�CASE���λĤ�Ͻ�������ޤ��� �⤷condition�η�̤����Ǥ���и��³�����Ƥ�WHEN�礬Ʊ���褦�ˤ���Ĵ�٤��ޤ���WHEN��condition��1�Ĥ⿿�Ǥʤ���硢CASE�����ͤ�ELSE���result�ˤʤ�ޤ���ELSE�礬��ά���졢�ɤ�condition�⿿�Ǥʤ���硢��̤�NULL�Ǥ���

�ʲ�����򼨤��ޤ���

SELECT * FROM test;

 a
---
 1
 2
 3


SELECT a,
       CASE WHEN a=1 THEN 'one'
            WHEN a=2 THEN 'two'
            ELSE 'other'
       END
    FROM test;

 a | case
---+-------
 1 | one
 2 | two
 3 | other

���Ƥ�result���Υǡ�������ñ��ν��Ϸ��˸ߴ������ʤ���Фʤ�ޤ��󡣾ܺ٤�項10.5�򻲾Ȥ��Ƥ���������

�ʲ��Τ褦�ˡ��嵭�ΰ���Ū�ʷ����Ȱۤʤ�CASE����"ñ���"������¸�ߤ��ޤ���

CASE expression
    WHEN value THEN result
    [WHEN ...]
    [ELSE result]
END

�ǽ��expression�Ϸ׻����졢�����Ƥ������������Τ����Ĥ���ޤ�WHEN��Τ��줾���value������Ӥ���ޤ��� ��������Τ����Ĥ���ʤ���硢ELSE���result�ʤ⤷����NULL�͡ˤ��֤���ޤ��������C�����switchʸ�˻��Ƥ��ޤ���

�����ϴ�ά��CASE��ʸ��ȤäƼ��Τ褦�˽񤯤��Ȥ��Ǥ��ޤ���

SELECT a,
       CASE a WHEN 1 THEN 'one'
              WHEN 2 THEN 'two'
              ELSE 'other'
       END
    FROM test;

 a | case
---+-------
 1 | one
 2 | two
 3 | other

CASE���ϡ���̤���ꤹ�뤿�����ɬ�פʤɤ���������ɾ�����ޤ����㤨�С��ʲ���0�������顼���ɤ��������ˡ�Ǥ���

SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;

注意: 項35.6�ˤ����������Ȥ��ꡢIMMUTABLE�Ȼ�Ŧ���줿�ؿ��Ȱ����ϡ����줬�¹Ԥ��������ǤϤʤ��䤤��碌���ײ褵�줿������ɾ������ޤ��� ���Τ��Ȥ���̣����Τϡ��䤤��碌�¹Ի�����ɾ������ʤ���ʸ̮�ΰ�����ʬ���䤤��碌�ײ�δ��֤Ǥ�̤����ɾ������³����Ȥ������ȤǤ���

9.17.2. COALESCE

COALESCE(value [, ...])

COALESCE�ؿ��ϡ�NULL�Ǥʤ����Ȥκǽ�ΰ������֤��ޤ������Ƥΰ�����NULL�ξ��ˤΤ�NULL���֤���ޤ����ǡ�����ɽ����Ū�Ǽ��Ф��ݡ�NULL�ͤ�ǥե�����ͤ��֤������뤿��ˤ褯���Ѥ���Ƥ��ޤ����ʲ�����򼨤��ޤ���

SELECT COALESCE(description, short_description, '(none)') ...

�����description��NULL�Ǥʤ���Ф򤽤��֤��ޤ��������Ǥʤ����(NULL�ξ��)�ϡ�short_description��NULL�Ǥʤ���Ф�����֤��ޤ��������Ǥ�ʤ�����(none)������ޤ���

CASE��Ʊ�͡�COALESCE�Ϸ�̤���ꤹ�뤿���ɬ�פʰ����Τߤ�ɾ�����ޤ����Ĥޤꡢ��NULL���������Ĥ���С����α�¦�ˤ��������ɾ������ޤ��󡣤���SQLɸ��ؿ���NVL��IFNULL������ε�ǽ���󶡤���¾�Τ����Ĥ��Υǡ����١��������ƥ�ǻ��Ѥ���Ƥ��ޤ���

9.17.3. NULLIF

NULLIF(value1, value2)

NULLIF�ؿ��ϡ�value1��value2����������硢NULL�ͤ��֤��ޤ��� ����¾�ξ���value1���֤��ޤ��� �����Ȥäơ��嵭��COALESCE����εձ黻��¹ԤǤ��ޤ�

SELECT NULLIF(value, '(none)') ...

������Ǥϡ�value1��(none)�ʤ��NULL���֤�ޤ��� ����ʤ���value1���֤��ޤ�

9.17.4. GREATEST�����LEAST

GREATEST(value [, ...])
LEAST(value [, ...])

GREATEST��LEAST�ؿ��ϼ���Ǥ�դο��Υꥹ�Ȥ�������ͤ⤷���ϺǾ��ͤ����򤷤ޤ���ɾ����������Ƥμ��ϡ���̤Ȥ���������ǡ����η��ȶ��̤η����Ѵ��Ǥ��ʤ��ƤϤʤ�ޤ���ʾܺ٤�項10.5�򻲾Ȥ��Ƥ��������ˡ��ꥹ�Ȥ����NULL�ͤ�̵�뤵��ޤ������Ƥμ���NULL��ɾ�����줿���˸¤äƷ�̤�NULL�ˤʤ�ޤ���

GREATEST�����LEAST��SQLɸ��˺ܤäƤ��ޤ��󤬡����̤�����ĥ�Ǥ���¾�Τ����Ĥ��Υǡ����١����Ǥϡ����Ƥ�NULL�ξ��˸��ꤻ���������줫�ΰ�����NULL�Ǥ������NULL���֤��褦�ˤ��Ƥ����Τ⤢��ޤ���