You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:12:07