PostgreSQL字段类型说明

 

BIGSERIAL

SERIAL8 

存储自动递增的惟一整数,最多 8 字节。

BIT 

固定长度的位串。

BIT VARYING(n)

VARBIT(n) 

可变长度的位串,长度为 n 位。

BOOLEAN 

存储逻辑布尔值(true/false/unknown),可以是 TRUE、t、true、y、yes 和 1,或者 FALSE、f、false、n、no 和 0。

BYTEA 

用于存储大型二进制对象(比如图形)的原始二进制数据。使用的存储空间是 4 字节加上二进制串的长度。

CHAR(n)

CHARACTER(n) 

包含固定长度的字符串,用空格填充到长度 n。

DATE 

用 4 字节的存储空间存储日历日期(年、月、日)。

DATETIME 

存储日历日期和天内的时间。

DECIMAL(p,s)

NUMERIC(p,s) 

存储精确的数值,精度(p)和刻度(s)为 0 或更高。

FLOAT4

REAL 

存储浮点数,精度为 8 或更低和 6 个小数位。

FLOAT8

DOUBLE PRECISION 

存储浮点数,精度为 16 或更低和 15 个小数位。

SMALLINT 

存储有符号或无符号 2 字节整数。

INTEGER 

存储有符号或无符号 4 字节整数。

INT8

BIGINT 

存储有符号或无符号 8 字节整数。

SERIAL

SERIAL4 

存储自动递增的惟一整数值,最多 4 字节存储空间。

TEXT 

存储长度可变的大型字符串数据,最多 1 GB。PostgreSQL 自动压缩 TEXT 字符串。

TIME (WITHOUT TIME ZONE |

WITH TIME ZONE) 

存储天内的时间。如果不存储数据库服务器的时区,就使用 8 字节的存储空间;如果存储时区,就使用 12 字节。

TIMESTAMP (WITHOUT TIME ZONE |

WITH TIME ZONE) 

存储日期和时间。可以存储或不存储数据库服务器的时区,使用 8 字节存储空间。

VARCHAR(n)

CHARACTER VARYING(n)

CHARACTER VARYING 

存储可变长度的字符串,最大长度为 n。不存储末尾的空格。  

 

  类似Oracle ,PostgreSQL也有强大的类型转换函数, 下面仅举两个类型转换例子。

     

      
–1 例子
postgres=# select 1/4;
 ?column? 
———-
        0
(1 row)

        在PG里如果想做除法并想保留小数,用上面的方法却行不通,因为”/” 运算结果为取整,并
且会截掉小数部分。
 

–2 类型转换
postgres=# select round(1::numeric/4::numeric,2);
 round 
——-
  0.25
(1 row)

  备注:类型转换后,就能保留小数部分了。

–3 也可以通过 cast 函数进行转换
postgres=# select round( cast ( 1 as numeric )/ cast( 4 as numeric),2);
 round 
——-
  0.25
(1 row)

–4 关于 cast 函数的用法
postgres=# SELECT substr(CAST (1234 AS text), 3,1);
 substr 
——–
 3
(1 row)

–5 附: PostgreSQL 类型转换函数

 

FunctionReturn TypeDescriptionExample

to_char
(timestamp, text

)

textconvert time stamp to stringto_char(current_timestamp, ‘HH12:MI:SS’)
to_char
(
interval, text
)
textconvert interval to stringto_char(interval ’15h 2m 12s’, ‘HH24:MI:SS’)
to_char
(
int, text
)
textconvert integer to stringto_char(125, ‘999’)

to_char
(
double

precision
, text
)

textconvert real/double precision to stringto_char(125.8::real, ‘999D9’)
to_char
(
numeric, text
)
textconvert numeric to stringto_char(-125.8, ‘999D99S’)
to_date
(text, text
)
dateconvert string to dateto_date(’05 Dec 2000′, ‘DD Mon YYYY’)
to_number
(
text, text
)
numericconvert string to numericto_number(‘12,454.8-‘, ’99G999D9S’)
to_timestamp
(
text, text
)
timestamp with time zoneconvert string to time stampto_timestamp(’05 Dec 2000′, ‘DD Mon YYYY’)
to_timestamp
(
double precision
)
timestamp with time zoneconvert Unix epoch to time stampto_timestamp(1284352323)

   

1varcharjava.lang.String12 
2bpcharjava.lang.String1 
3cidrjava.lang.Object1,111 
4inetjava.lang.Object1,111 
5macaddrjava.lang.Object1,111 
6textjava.lang.String12 
7int8java.lang.Long-5 
8int8java.lang.Long-5 
9boxjava.lang.Object1,111 
10circlejava.lang.Object1,111 
11float8java.lang.Double8 
12int4java.lang.Integer4 
13intervaljava.lang.Object1,111 
14linejava.lang.Object1,111 
15lsegjava.lang.Object1,111 
16moneyjava.lang.Double8 
17numericjava.math.BigDecimal2 
18pathjava.lang.Object1,111 
19pointjava.lang.Object1,111 
20polygonjava.lang.Object1,111 
21float4java.lang.Float7 
22int2java.lang.Integer5 
23int4java.lang.Integer4 
24timejava.sql.Time92 
25timestampjava.sql.Timestamp93 
26bitjava.lang.Boolean-7 
27varbitjava.lang.Object1,111 
28booljava.lang.Boolean-7 
29bytea[B-2

    原文作者:PostgreSQL
    原文地址: https://www.cnblogs.com/logsharing/p/8260129.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞