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的第二个参数使用技巧,第二个参数分为两个部分:

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

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

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

你可能感兴趣的:(postgresql,PostgreSQL二次开发)