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] END
CASE �Ӿ���������κα��ʽ������Ч���ڵĵط��� 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)') ...