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 類型轉換函數

 

Function Return Type Description Example


to_char
(timestamp, text

)


text
convert time stamp to string
to_char(current_timestamp, 'HH12:MI:SS')

to_char
(
interval, text
)

text
convert interval to string
to_char(interval '15h 2m 12s', 'HH24:MI:SS')

to_char
(
int, text
)

text
convert integer to string
to_char(125, '999')


to_char
(
double

precision
, text
)


text
convert real/double precision to string
to_char(125.8::real, '999D9')

to_char
(
numeric, text
)

text
convert numeric to string
to_char(-125.8, '999D99S')

to_date
(text, text
)

date
convert string to date
to_date('05 Dec 2000', 'DD Mon YYYY')

to_number
(
text, text
)

numeric
convert string to numeric
to_number('12,454.8-', '99G999D9S')

to_timestamp
(
text, text
)

timestamp with time zone
convert string to time stamp
to_timestamp('05 Dec 2000', 'DD Mon YYYY')

to_timestamp
(
double precision
)

timestamp with time zone
convert Unix epoch to time stamp
to_timestamp(1284352323)
 
 
1 varchar java.lang.String 12  
2 bpchar java.lang.String 1  
3 cidr java.lang.Object 1,111  
4 inet java.lang.Object 1,111  
5 macaddr java.lang.Object 1,111  
6 text java.lang.String 12  
7 int8 java.lang.Long -5  
8 int8 java.lang.Long -5  
9 box java.lang.Object 1,111  
10 circle java.lang.Object 1,111  
11 float8 java.lang.Double 8  
12 int4 java.lang.Integer 4  
13 interval java.lang.Object 1,111  
14 line java.lang.Object 1,111  
15 lseg java.lang.Object 1,111  
16 money java.lang.Double 8  
17 numeric java.math.BigDecimal 2  
18 path java.lang.Object 1,111  
19 point java.lang.Object 1,111  
20 polygon java.lang.Object 1,111  
21 float4 java.lang.Float 7  
22 int2 java.lang.Integer 5  
23 int4 java.lang.Integer 4  
24 time java.sql.Time 92  
25 timestamp java.sql.Timestamp 93  
26 bit java.lang.Boolean -7  
27 varbit java.lang.Object 1,111  
28 bool java.lang.Boolean -7  
29 bytea [B -2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM