PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 10. ����ת�� | Fast Forward | Next |
һ�β��������õIJ����������ǰ�������Ĺ��̽����ġ� ��ע����������ܱ����ò����������ȼ��ļ��Ӱ�졣 ���� Section 4.1.6 ��ȡ������Ϣ��
���������ͽ���
�� pg_operator ϵͳ����ѡ��Ҫ���ǵIJ������� ���ʹ����һ���������εIJ���������������״������ ��ô��Ϊ�ò���������Щ�ڵ�ǰ������·�������ֺͲ���������ȷ�ĺ��������� Section 5.8.3���� �������һ�������εIJ�����������ôֻ����ָ����ģʽ�еIJ�������
�������·�����ҵ��˶����ͬ�������͵IJ���������ôֻ�������������·���еġ� ���Dz�ͬ�������͵IJ�����������ͬ�Ļ������п��ǣ�������������·���е�λ����Ρ�
���һ���������Ƿ�պý�������������͡� �������һ�����ڿ��ǵIJ������У�����ֻ����һ����ȷƥ��ģ��� ����֮��
���һ��˫Ŀ�����������е�һ�������� unknown�� ���ڱ��μ���м���������һ������������ͬ�� �����漰 unknown ���������������һ���ҵ�ƥ�䡣
Ѱ������ƥ�䡣
������Щ�������Ͳ�ƥ�䲢��Ҳ����ǿ��ת����ʹ������ת����������ƥ��ĺ�ѡ�������� unknown �ı�����������±���Ϊ�ǿ���ת�����κζ��������ֻʣ��һ����ѡ���֮�� ���������һ����
�������к�ѡ��������������Щ�������������ȷƥ��ġ� ������������£����������ǵĻ���������ͬ���� ���û����ȫȷƥ��IJ��������������к�ѡ�� ���ֻ��һ������֮�����������һ����
�������к�ѡ��������������Щ��Ҫ����ת��ʱ���λ�ý��ܣ������������͵����ͷ���ģ���ѡ���͵ġ� ���û�н�����ѡѡ���͵IJ��������������к�ѡ�� ���ֻ��һ������֮�����������һ����
����κ���������� unknown�����ʣ�µĺ�ѡ��������Ӧ����λ�õ����ͷ��롣 ����κκ�ѡ����������string���ͣ�������Щλ��ѡstring���� �����������Ϊ�ִ��Ǻ��ʵģ���Ϊ unknown �����ı�ȷʵ���ִ����� �����������ʣ�µĺ�ѡ������������ͬ�����ͣ�ѡ������ͣ� �����׳�һ��������Ϊ��û�и��������������²��ܵ�����ȷ��ѡ�� ��������������ѡ�������ͱ�ĺ�ѡ��������Ȼ�� ��������ѡ��������ij�������IJ���λ�ý���һ����ѡ���ͣ� ��������Щ�ڸò���λ�ý��ܷ���ѡ���͵ĺ�ѡ��������
���ֻʣ��һ������������֮�� ������г���һ���ĺ�ѡ����������û�к�ѡ�������������һ������
������һЩ���ӡ�
Example 10-1. ָ�����������ͽ���
�ڷ�����ֻ��һ��ָ�������������� double precision ��Ϊ������ɨ�����������ѯ���ʽ�������������� integer �ij�ʼ���ͣ�
SELECT 2 ^ 3 AS "exp"; exp ----- 8 (1 row)
������������������������ת������ѯ��Ч�ڣ�
SELECT CAST(2 AS double precision) ^ CAST(3 AS double precision) AS "exp";
Example 10-2. �ִ����Ӳ��������ͷ���
һ�����ַ�������ȿ��������ַ���Ҳ�������ڸ��ӵ���չ���͡� �����������͵��ִ�ʹ�ÿ��ܵĺ�ѡ������ƥ�䡣
��һ��δ�����IJ��������ӣ�
SELECT text 'abc' || 'def' AS "text and unknown"; text and unknown ------------------ abcdef (1 row)
�����з�����Ѱ��һ�������������� text �IJ���������Ϊ��һ�������IJ�����������Ϊ��һ�������������� text��
����������δ�������ͣ�
SELECT 'abc' || 'def' AS "unspecified"; unspecified ------------- abcdef (1 row)
�����ж������κγ�ʼ��ʾ����Ϊ��ѯ��û�������κ����͡� ��ˣ��������������в�������ͬʱ�����ַ������λ����ĺ�ѡ�������� ��Ϊ�ڿ���ʱ�ִ�������ѡ������ѡ��ñ������ִ�����ѡ���ͣ� text����Ϊ����δ֪�����ı����������͡�
Example 10-3. ����ֵ��ȡ�����������ͷ���
PostgreSQL �������������м�����¼����ǰ������ @�� ������Щ����Ϊ������ֵ����ʵ�־���ֵ�����ġ�������һ���������� float8�� ������ֵ���е���ѡ���͡���ˣ� ����Է���ֵ�����ʱ��PostgreSQL ��ʹ�ø����͡�
select @ text '-4.5' as "abs"; abs ----- 4.5 (1 row)
������ϵͳ��Ӧ��ѡ���IJ�����֮ǰִ����һ��text��float8��ת�������ǿ�����֤����float8����������ʲô���ͣ�
select @ text '-4.5e500' as "abs"; ERROR: Input '-4.5e500' is out of range for float8
��һ���棬ǰ������ ~ ����λȡ���� ֻΪ�����������Ͷ��壬 ������Ϊfloat8����ġ���ˣ���������� ~ ������ʵ�飬���У�
SELECT ~ '20' AS "negation"; ERROR: operator is not unique: ~ "unknown" HINT: Could not choose a best candidate operator. You may need to add explicit type casts.
������Ϊϵͳ�������ü������ܵ� ~ ��������Ӧ�����ĸ������ǿ�������ȷ������ת����������
SELECT ~ CAST('20' AS int8) AS "negation"; negation ---------- -21 (1 row)