zhoujun.g 发表于 2016-11-19 07:57:23

postgreSQL 类型转换

PostgreSQL 类型转换 类似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 string
to_char(current_timestamp, 'HH12:MI:SS')
to_char
(
interval, text
)
textconvert interval to string
to_char(interval '15h2m12s', 'HH24:MI:SS')
to_char
(
int, text
)
textconvert integer to string
to_char(125, '999')
to_char
(
double
precision
, text
)


textconvert real/double precision to string
to_char(125.8::real, '999D9')
to_char
(
numeric, text
)
textconvert numeric to string
to_char(-125.8, '999D99S')
to_date
(text, text
)
dateconvert string to date
to_date('05Dec2000', 'DDMonYYYY')
to_number
(
text, text
)
numericconvert string to numeric
to_number('12,454.8-', '99G999D9S')
to_timestamp
(
text, text
)
timestamp with time zoneconvert string to time stamp
to_timestamp('05Dec2000', 'DDMonYYYY')
to_timestamp
(
double precision
)
timestamp with time zoneconvert Unix epoch to time stamp
to_timestamp(1284352323
页: [1]
查看完整版本: postgreSQL 类型转换