postgreSQL資料型別字串和數值相互轉換

2021-08-13 02:04:10 字數 1751 閱讀 1345

1、將數值轉成字串型別

方法1:呼叫to_char(int, text)函式,int為要轉換值,text為數值格式化模式,其中模式描述為:

模式 描述
9 帶有指定數值位數的值
0 帶前導零的值
.(句點) 小數點
,(逗號) 分組(千)分隔符
pr 尖括號內負值
s 帶符號的數值
l 貨幣符號
d 小數點
g 分組分隔符
mi 在指明的位置的負號(如果數字 < 0)
pl 在指明的位置的正號(如果數字 > 0)
sg 在指明的位置的正/負號

使用舉例:

select to_char(12345, '9999999999999999999')//結果『              12345』,結果字串前面有空格,位數跟格式化模式中9的位數有關;

select to_char(12345, '99999')//結果『12345』

select to_char(12345, '9999')//結果『####』,當模式串小於數字個數時,字串會顯示為#,位數跟

格式化模式中9的位數有關;

select to_char(12345, '')//結果『』

問題:將數值轉成字串且不要前面的空格實現起來很麻煩,由於無法判斷

格式化模式中9的位數。可用下面方法2解決:

方法2:通過||連線

''||12345

2、將字串轉成數值

方法呼叫: to_number(text,text

)函式,引數1是要轉的數字字串,引數2為模式引數,返回的型別 numeric  

使用舉例:

select to_number('12345', '9999999999999999999')//12345

select to_number('12345', '99999')//12345

select to_number(''||12345, '9999')//1234,由於模式是4位,結果忽略最後一位;

select to_number('    12345', '9999999999999999999')//12345

select to_number('  ab  ,1,2a3,4b5', '9999999999999999999')//12345,會忽略所有字串中非數字字元

select to_number('12,454.8-', '99g999d9s')

另外還可以

--把'1234'轉成整數

select cast('1234' as integer) ;

select cast('1234' as int) ;

--用substring擷取字串,從第8個字元開始擷取2個字元:結果是12。(索引從1開始)

select cast(substring('1234abc12',8,2) as integer)  

還見過以下寫法

select '123456'::int  test

postgresql資料型別

bigint int8 有符號的8位元組整數 bigserial serial8 自動增長的8位元組整數 bit n 定長位串 bit varying n varbit 變長位串 boolean bool 邏輯布林值 真 假 box 平面上的普通方框 bytea 二進位制資料 位元組陣列 chara...

PostgreSQL的常見資料型別

postgresql 支援的數字型別有整數型別,使用者指定精度型別,浮點型,serial型別。數字型別列表 smallint,integre,bigint都是整數型別,儲存一定範圍的整數,超出範圍將會報錯。smallint儲存2位元組的整數,字段定義時可寫成int2。integer儲存4位元組整數,...

postgresql 復合資料型別的使用方法

postgresq 資料庫的資料型別分為4種 基本資料型別 復合資料型別 域以及偽型別 基本型別 資料庫內建資料型別,例如integer char varchar等 復合資料型別 需要使用者自定義,所謂復合就是把多個基本型別融合在一起使用,復合型別的字段實際上就是乙個特殊的陣列 域 一種特殊的基本資...