postgres資料庫中的資料轉換

2022-03-22 01:36:57 字數 3941 閱讀 3548

postgres8.3以後,字段資料之間的預設轉換取消了。如果需要進行資料變換的話,在postgres資料庫中,我們可以用"::"來進行字段資料的型別轉換。實際上"::"是呼叫cast函式的。究竟哪些字段之間可以進行資料轉換呢?

這個問題只要研究一下cast函式就能夠得到答案。cast函式的資訊在系統pg_cast表裡面管理。

通過查詢我們可以得到現階段可以轉換的型別對照表如下:

源型別            轉換目標型別

int8

int2

int8

int4

int8

float4

int8

float8

int8

numeric

int2

int8

int2

int4

int2

float4

int2

float8

int2

numeric

int4

int8

int4

int2

int4

float4

int4

float8

int4

numeric

float4

int8

float4

int2

float4

int4

float4

float8

float4

numeric

float8

int8

float8

int2

float8

int4

float8

float4

float8

numeric

numeric

int8

numeric

int2

numeric

int4

numeric

float4

numeric

float8

int4

bool

bool

int4

int8

oidint2

oidoid

int8

int8

regproc

int2

regproc

regproc

int8

int8

regprocedure

int2

regprocedure

regprocedure

int8

int8

regoper

int2

regoper

regoper

int8

int8

regoperator

int2

regoperator

regoperator

int8

int8

regclass

int2

regclass

regclass

int8

int8

regtype

int2

regtype

regtype

int8

int8

regconfig

int2

regconfig

regconfig

int8

int8

regdictionary

int2

regdictionary

regdictionary

int8

text

regclass

varchar

regclass

bpchar

text

bpchar

varchar

char

text

char

bpchar

char

varchar

name

text

name

bpchar

name

varchar

text

char

bpchar

char

varchar

char

text

name

bpchar

name

varchar

name

char

int4

int4

char

abstime

date

abstime

time

abstime

timestamp

abstime

timestamptz

reltime

interval

date

timestamp

date

timestamptz

time

interval

time

timetz

timestamp

abstime

timestamp

date

timestamp

time

timestamp

timestamptz

timestamptz

abstime

timestamptz

date

timestamptz

time

timestamptz

timestamp

timestamptz

timetz

interval

reltime

interval

time

timetz

time

lseg

point

path

point

path

polygon

boxpoint

boxlseg

boxpolygon

boxcircle

polygon

point

polygon

path

polygon

boxpolygon

circle

circle

point

circle

boxcircle

polygon

inet

cidr

int8

bitint4

bitbit

int8

bitint4

cidr

text

inet

text

bool

text

text

xmlcidr

varchar

inet

varchar

bool

varchar

varchar

xmlcidr

bpchar

inet

bpchar

bool

bpchar

bpchar

xmlbpchar

bpchar

varchar

varchar

time

time

timestamp

timestamp

timestamptz

timestamptz

interval

interval

timetz

timetz

bitbit

varbit

varbit

numeric

numeric

postgres資料庫中的資料轉換

postgres8.3以後,字段資料之間的預設轉換取消了。如果需要進行資料變換的話,在postgres資料庫中,我們可以用 來進行字段資料的型別轉換。實際上 是呼叫cast函式的。究竟哪些字段之間可以進行資料轉換呢?這個問題只要研究一下cast函式就能夠得到答案。cast函式的資訊在系統pg cas...

postgres模板資料庫

create database 實際上是通過拷貝乙個現有的資料庫進行工作的。預設時,它拷貝名為 template1 的標準系統資料庫。所以該資料庫是建立新資料庫的 模板 如果你給 template1 增加物件,這些物件將被拷貝到隨後建立的使用者資料庫中。這樣的行為允許節點對資料庫中的標準套件進行修改...

Postgres中更好的資料庫遷移

譯者注 在postgres中進行資料庫遷移時會遇到哪些問題?如何解決它們?請見下文。有兩種操作發生的很頻繁,每種操作都有一些簡單的方法可以減少停機時間。讓我們看看每乙個操作,它們是如何工作的,以及如何以更安全的方式來處理它們。在postgres中新增乙個新列實際上代價是很低的。當你這樣做的時候,它會...