PostgreSQL to_char 数据类型格式化函数

帮助文档

1 需求

整数格式化为字符串时,不足的位数需要左补零

select format('%s°%s′%s″',
	to_char(98,'000'),	--度.规范要求3位,不足左补0
	to_char(55,'00'),	--分.规范要求2位,不足左补0
	to_char(12,'00')		--秒.规范要求2位,不足左补0
);
/* 
输出,默认格式化前都会有个空格
 098° 55′ 12″
*/

2 第一反应实现

对于左补零来说,大家第一个想到的就是lpad函数

select format('%s°%s′%s″',
	lpad(98::text,3,'0'),	--度
	lpad(55::text,2,'0'),	--分
	lpad(12::text,2,'0')		--秒
);

或者

select format('%s°%s′%s″',
	trim(to_char(98,'000')),		--度
	trim(to_char(55,'00')),		--分
	trim(to_char(12,'00'))		--秒
);

上面的代码简单粗暴实现了需求,但是效率比较差,因为显示或隐式调用了太多的函数.

3 最终解决方案

format一次性处理

select format('%s°%s′%s″',
	to_char(98,'FM000'),	--度
	to_char(55,'FM00'),	--分
	to_char(12,'FM00')	--秒
);

4 to_char注意事项

注意to_char的第二个参数使用技巧,第二个参数分为两个部分:

  • 模板模式
  • 模板模式修饰语

平时我们可能只注意查看模板模式 ,忽略了模板模式修饰语.

如果结果不符合预期的话,不防看一下模板模式修饰语

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kmblack1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值