使用PATINDEX校验替换 解决浮点转字符串去前后导零返回小数点问题
float转字符串去零逻辑异常修复求助
我现有一段可按预设长度和精度将float类型转换为字符串,同时移除前导零与尾随零的查询语句,具体如下:
SELECT replace(ltrim(replace(replace(rtrim(replace(str(2005.012, 17,9), '0', ' ')), ' ','0'),'0',' ')), ' ','0')
正常场景输出结果:
2005.012
但该逻辑存在异常:当输入数据为0.0时,返回结果仅为小数点。
异常场景测试语句:
SELECT replace(ltrim(replace(replace(rtrim(replace(str(0.0, 17,9), '0', ' ')), ' ','0'),'0',' ')), ' ','0')
异常场景输出结果:
.
具体诉求
- 能否通过
PATINDEX判断输出结果是否为.,如果匹配则将结果替换为0.0? - 是否有其他可实现移除前导零、尾随零的可行方案?
注意:方案禁止使用
cast或round函数——该逻辑用于跨两个数据库的数据比对,这两个函数会干扰小数精度,不符合使用要求。
内容的提问来源于stack exchange,提问作者nTlearn
相关产品推荐
相关产品推荐

