| PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 9. �����Ͳ����� | Fast Forward | Next | 
���������� PostgreSQL ������õ�SQL���ݵ��������ʽ��
��ʾ: ������������Щ�������ʽ������������ܻ�ϣ����һ�ָ����������ı������дһ���洢���̡�
SQL CASE ���ʽ��һ��ͨ�õ��������ʽ�����������������е� if/else ��䡣
CASE WHEN condition THEN result
     [WHEN ...]
     [ELSE result]
ENDCASE �Ӿ���������κα��ʽ������Ч���ڵĵط��� condition ��һ������boolean �ı��ʽ�� ������Ϊ�棬��ô CASE ���ʽ�Ľ�����Ƿ��������� result�� ������Ϊ�٣���ô����ͬ��ʽ��Ѱ�κ����� WHEN �Ӿ䡣 ���û�� WHEN condition Ϊ�棬��ô case ���ʽ�Ľ�������� ELSE �Ӿ����ֵ�� ���ʡ���� 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 ���ʽ�����ݵ����Ͷ��������ת���ɵ�һ��������͡� ���� Section 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 ���ʽ���������κζ����жϽ��������Ҫ���ӱ��ʽ�� ���磬������һ�����Ա��ⱻ����ķ�����
SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;
COALESCE(value[, ...])COALESCE �������ĵ�һ���� NULL �IJ�����ֵ�� ����������Ϊ��ʾĿ�ļ�������ʱ��ȱʡֵ�滻 NULL ֵ�� ���磺
SELECT COALESCE(description, short_description, '(none)') ...
�� CASE ���ʽһ����COALESCE ������ ���㲻��Ҫ�����жϽ���IJ�����Ҳ����˵���ڵ�һ���ǿղ����ұߵIJ������ᱻ ���㡣
NULLIF(value1, value2)
���ҽ��� value1 �� value2 ���ʱ��NULLIF �ŷ��� NULL�� ���������� value1�� ��Щ��������ִ����������� COALESCE ���ӵķ�����
SELECT NULLIF(value, '(none)') ...