我需要将字段转换float
为string
,但有以下限制
- 需要截断小数点后6位的结果
- 截断小数点后的任何尾随零
例如:
- 17.666655942234 ==> 转换为字符串“17.666655”
- 17.6 ==> 转换为字符串“17.6”而不是“17.600000”
- 17.66 ==> 转换为字符串“17.66”
我尝试了以下方法,但未能满足上述某些要求,也无法删除零。
select
CASE WHEN RIGHT(convert(VARCHAR, cast(cast(product_price as DECIMAL(28,6)) as float)),2) = ".0"
THEN LEFT(convert(VARCHAR, product_price),(CHAR_LENGTH(convert(VARCHAR(15), product_price))-2))
ELSE substring( convert(VARCHAR, cast(cast(product_price as DECIMAL(28,7)) as float)),1, charindex(".",convert(VARCHAR, cast(cast(product_price as DECIMAL(28,7)) as float)))+6) END
from #TEMP
#TEMP 数据
id | product_price
-------------------
1 | 17.3435302323
2 | 17.700000000
3 | 17.60
4 | 19.0
我想,我已经把查询复杂化了,应该有一个更简单的版本。
我知道这可以用高级语言轻松处理,但如果这可以很容易地容纳在查询本身中,那么请告诉我。