如何在SQL中为数字补前导零?报错问题求助
问题解决:PostgreSQL补前导零报错修复
错误原因
你遇到的ERROR: operator does not exist: unknown + character varying是因为PostgreSQL不支持用+做字符串拼接操作,'0000'属于unknown类型,无法和varchar类型的a.id_immoble转换结果通过+运算。
解决方案
方法1:替换字符串拼接运算符
把+换成PostgreSQL标准的字符串拼接运算符||,修正后的SQL:
select b.min::integer, a.id_immoble,a.planta, a.num_via, a.escalera, a.bloque, a.refcat, right('0000' || cast(a.id_immoble as varchar(4)), 4) from paola.cadastre_amb_immoble a
方法2:使用lpad函数(更简洁推荐)
PostgreSQL提供了lpad函数专门实现补前导字符的需求,无需手动拼接后截取,直接指定总长度和补位字符即可:
select b.min::integer, a.id_immoble,a.planta, a.num_via, a.escalera, a.bloque, a.refcat, lpad(a.id_immoble::varchar, 4, '0') from paola.cadastre_amb_immoble a
lpad函数参数说明:
- 第一个参数:要处理的字段(转换为字符串类型)
- 第二个参数:最终结果的总长度(这里是4位)
- 第三个参数:用来补位的字符(这里是'0')
这样就能实现数字1显示为0001、数字234显示为0234的需求。
内容的提问来源于stack exchange,提问作者paola barrera
相关产品推荐
相关产品推荐

