CREATE CAST

Name

CREATE CAST -- ����һ���û������ת��

Synopsis

CREATE CAST (sourcetype AS targettype)
    WITH FUNCTION funcname (argtypes)
    [ AS ASSIGNMENT | AS IMPLICIT ]

CREATE CAST (sourcetype AS targettype)
    WITHOUT FUNCTION
    [ AS ASSIGNMENT | AS IMPLICIT ]

����

CREATE CAST ����һ���µ�ת���� һ��ת��˵���������������֮�����ת�������磺

SELECT CAST(42 AS text);

ͨ������ǰ��������һ������������������ 42 ת�������� text�� ������������� text(int4)�������û��Ԥ�ȶ���ú��ʵ�ת������ô���ת��ʧ�ܡ���

�������Ϳ����������Ƽ��ݵ��� ��˼������֮�����"����ת��"�����õ����κκ����� �����Ҫ�Ǹ���Ӧ����ֵʹ��ͬ�����ڲ�������ʽ�� ���磬���� text �� varchar �Ƕ����Ƽ��ݵġ�

ȱʡʱ��ֻ������ȷҪ��ת��������²ŵ���һ��ת���� Ҳ����һ����ȷ�� CAST(x AS typename) ���� x::typename ���졣

���ת�����Ϊ AS ASSIGNMENT����ô�ڸ�һ����ֵ��Ŀ���������͵��ֶε�ʱ�� �������������������磬���� foo.f1 ��һ������Ϊ text ���ֶΣ���ô

INSERT INTO foo(f1) VALUES (42);

��������� integer ������ text ��ת�����Ϊ AS ASSIGNMENT�� ��������ͱ���������Ͳ�����������ͨ����������ֵת������������ת������

���ת�����Ϊ AS IMPLICIT����ô���Ϳ������κλ�������ã� �����Ǹ�ֵ�����ڱ��ʽ���ڲ������磬��Ϊ || ���� text ��������

SELECT 'The time is ' || now();

��ֻ�������� timestamp �� text ��ת�����Ϊ AS IMPLICIT ��ʱ��������������Ǿͱ�����ȷ��дת���� ����

SELECT 'The time is ' || CAST(now() AS text);

������ͨ��ʹ����������ת���������������͵�ת������

�ڱ��ת��Ϊ��������������ϱ���һЩ�����ǵġ� ���ڷḻ������ת��·���ᵼ�� PostgreSQL ѡ��������ֵ�����Ľ����� ��������ȫ���ܽ��������Ϊ���ڶ�����ܵĽ����� һ���õ�Ĵָ�����ǣ�ֻ����ͬһ��ͨ�����ͱ��������Щ���Ա���ת����Ϣ������֮��ű��Ϊ����������ת���� ���磬�� int2 �� int4 ���Ժ���ر��Ϊ����ת�������Ǵ� float8 �� int4 ����Ӧ���DZ��Ϊ��ֵת���������ͱ��ת�������� text �� int4�������ֻ����ȷ��ת����

Ҫ�봴��һ��ת���������ӵ��Դ����Ŀ���������͡�Ҫ����һ�������Ƽ��ݵ�ת���� ������dz����û������������������Ϊһ��������Ķ����Ƽ���ת�����Ժ����״ݻٷ���������

����

sourcetype

ת����Դ�������͡�

targettype

ת����Ŀ���������͡�

funcname(argtypes)

����ִ��ת���ĺ����������������������ģʽ�����εġ� �����û����ģʽ�����Σ���ô�ú�������ģʽ����·�����ҳ����� �����Ľ���������ͱ���ƥ��ת����Ŀ�����͡����IJ������������ۡ�

WITHOUT FUNCTION

��ʾԴ�������ͺ�Ŀ�����������Ƕ����Ƽ��ݵģ� ���Բ���Ҫʲô������ִ��ת����

AS ASSIGNMENT

��ʾת�������ڸ�ֵ�������������á�

AS IMPLICIT

��ʾ���ת���������κλ������������á�

ת��ʵ�ֺ���������һ��������������һ���������ͱ����ת����Դ������ͬ�� ����еڶ�����������ô���������� integer����������Ŀ��������������������δʣ� ���û�У����� -1������е������������ͱ��������� boolean�� ������ת����һ����ȷ��ת������ô���յ� true�������յ� false�� ������������ֵ��ǣ�SQL �淶��ijЩ������Ҫ��ͬ����ȷ������ת������Ϊ����������ṩ����Щ����ʵ��������ת���ĺ����� ���Dz������������Ҫ��˴����Լ����������͡���

��������£�����ת�������в�ͬ��Դ���ͺ�Ŀ���������͡�����������������һ��Դ���ͺ�Ŀ��������ͬ������ת���� ֻҪ���г���һ������������ת��ʵ�ֺ������������������ϵͳ�����ʾ������صij���ת�������� �������ĺ�������ת��һ�������͵���ֵΪ��ڶ������������Ĵ��������δʵ�ֵ�� ����ΪĿǰ�﷨ֻ����ijЩ���õ���������ӵ���������δʣ����������Զ��û������Ŀ������û��ʲô�ã������ᵽ��ֻ��Ϊ����������

���һ������ת����Դ���ͺ�Ŀ�����Ͳ�ͬ�����ҽ��ն���һ�������� ���ͱ�ʾ��һ�������һ������ת��������һ�����ͣ�����ͬʱʩ�ӳ���ת���� ���û����������Ŀ���ã���ôת����һ��ʹ�����������δʵ������漰�������裬 һ��������������֮��ת��������һ����ʩ�����δʡ�

ע��

�� DROP CAST ɾ���û������ת����

��ע�⣬���������˫��ת�����ͣ���ô����Ҫ��ȷ�ض������������ת����

�� PostgreSQL 7.3 ֮ǰ�����һ�����������ֺ�һ������������ͬ�� ���ҷ��ظ����������ͣ����һ���������һ�����͵IJ����Զ�����һ��ת�������� �����ͳ����ģʽ�������Լ�Ϊ������ϵͳ���ֱ�ʾ�����Ƽ��ݵ�ת���ͱ������ˡ� ���õ�ת��������Ȼ��ѭ����������򣬵�����������ͬʱҲ��ϵͳ�� pg_cast ����ʾΪת����

��Ȼ���DZ���ģ��������ǻ��ǽ�������ѭ�ɵ���������ת��ʵ�ֺ�����ϰ�ߣ� Ҳ����˵����������Ŀ����������ͬ��������û�ϰ����ʹ�ú������ı�ʾ��������������ת���� ��������typename(x)�� ���ֱ�ʾ��ǡ�þ��ǵ�������ת��ʵ�ֺ��������������ᱻ����һ������ת�������⿴���� ������ת������û�а������ִ�ͳ��������ô��ͻ����û�����֡� ��Ϊ PostgreSQL ����ͬ����ͬ�����ĺ������أ����ͬʱ���ڶ���Ӳ�ͬ������ͬ������ת����ͬ��ת������һ�����ⶼû�С�

ע��: ǰ��Ķ�������һ��СС�Ļѣ���Ȼ��һ������£�ϵͳ��Ҫʹ�� pg_cast ������һ�����Եĺ������õĺ��塣 ���һ���������� name(x) ��ƥ���κ�ʵ�ʺ����� �� name ��һ���������͵����ֲ��� pg_cast ��ʾ�����Ǵ����� x ���������͵�һ�������Ƽ��ݵ�ת���� ��ô�õ��ý��������һ����ȷ��ת���������������Ϳ����ö����Ƽ��ݵ�����ת��ʹ�ú���״���﷨���ã� ��ʹ����ȱ�ٺ���Ҳ���ԡ�

����

Ҫʹ�ú��� int4(text) ����һ�������� text ������ int4��ת����

CREATE CAST (text AS int4) WITH FUNCTION int4(text);

�����ת����ϵͳ���Ѿ�Ԥ�ȶ����ˡ���

������

CREATE CAST ������ѭ SQL:1999��ֻ���� SQL:1999 û���ṩ�����Ƽ������ͻ��߶���IJ�������ʵ�ֺ�����AS IMPLICIT Ҳ�� PostgreSQL ����չ��

�ּ�

CREATE FUNCTION, CREATE TYPE, DROP CAST