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

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

�ƥ��å�: ���������������P���ȯŸ������ǽ�������ϡ����ɽ����˭�٤ʥץ���������ǥ��ȥ��ɥץ���������򵭽Ҥ��뤳�ȤDz�褵��ޤ���

9.13.1. CASE

SQL��CASE����¾�θ����if/else��ʸ������������Ѿ�P�Ǥ���

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

CASE��ϼ���ͭ���ʰ��֤Ǥ���Фɤ��Ǥ���Ѳ�ǽ�Ǥ���condition�Ȥ�boolean���η�̤��֤����Ǥ����⤷��̤����Ǥ����CASE�����ͤ�result�Ȥʤ�ޤ����⤷��̤����Ǥ����Ʊ���褦�ˤ��Ƹ��³��WHEN�礬Ĵ�٤��ޤ���WHEN��condition��1�Ĥ⿿�Ǥʤ���硢CASE�����ͤ�ELSE���result�ˤʤ�ޤ���ELSE�礬�ʤ����ɤξ��Ȥ���פ��ʤ���硢��̤�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;

9.13.2. COALESCE

COALESCE(value [, ...])

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

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

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

9.13.3. NULLIF

NULLIF(value1, value2)

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

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

�⤷value1��(none)�Ǥ���С�NULL�ͤ��֤��ޤ�������¾�ξ���value1���֤��ޤ���

9.13.4. GREATEST �� LEAST

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

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

GREATEST�����LEAST��SQLɸ��˺ܤäƤ��ޤ��󤬡����̤�����ĥ�Ǥ���