SQL为以字符'5'开头的VARCHAR类型列添加前导0的问题求解
问题原因
你使用的SQL引擎中+是数值加法运算符,执行语句时数据库会尝试将操作的字符串内容隐式转换为数值类型做加法计算,因此触发了字符串转float8失败的报错。
解决方案
使用专门的字符串拼接函数CONCAT实现需求,该函数跨大部分主流SQL引擎(PostgreSQL/MySQL/SQL Server等)通用,且返回结果为字符串类型,完全符合你保持VARCHAR类型做表关联的要求:
SELECT Category, CASE WHEN ID LIKE '5%' THEN CONCAT('0', ID) ELSE ID END AS ID FROM 你的表名;
如果你使用的是PostgreSQL,也可以用原生字符串拼接符||实现:
SELECT Category, CASE WHEN ID LIKE '5%' THEN '0' || ID ELSE ID END AS ID FROM 你的表名;
效果验证
以上代码会仅对5开头的ID添加前导0,其余原值保留,完全匹配你给出的预期输出结果。
内容的提问来源于stack exchange,提问作者AL0290
相关产品推荐
相关产品推荐

