问题现象:
今天在学习中思考了这样一个问题:
如何给sql中select结果集中的某个字段转换数据类型呢?
问题分析:
我们知道java中也有数据类型转换的对应函数(函数很多,每种数据类型都有对应的转换函数,这里就不扯了);
回到正题,sql中的数据类型转换函数只有一个:
cast( x as 转换后的数据类型) ;
作用是: 将 x 转化为 as 关键字 后面定义的 数据类型;
这里需要注意的是: 这个 x 必须是适配 as 关键字后面的 数据类型 的才能 转换成功,否则会报错, 如:
select cast( 'abcde' as timestamp); // 报错,因为'abcde' 不适配 timestamp 数据类型 ,导致转换失败而报错;
另外还要注意的就是一些细节,例如:
'2020-08-25' 是不能转换为 timestamp 数据类型, 因为 虽然两者都是日期数据类型 但timestamp 必须精确到秒;
而 '2020-08-25' 字符串可以转换为 date类型,因为date类型只精确到日.
所以说精确度不同也会导致转换失败.
解决方法:
1.将数据 转换为 vachar 类型:
select cast( 123 as varchar);
1.将数据 转换为 int类型:
select cast( '123 'as int2); 或 select cast( '123 'as int4); 等;