我需要将float
中的字段转换为string
,但有以下限制
例如:
我已经尝试了以下方法,但是由于某些上述要求而失败,也无法删除零。
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
id | product_price
-------------------
1 | 17.3435302323
2 | 17.700000000
3 | 17.60
4 | 19.0
我想,我的查询很复杂,应该存在一个更简单的版本。
我知道这可以用高级语言轻松处理,但如果可以轻松地在查询本身中进行处理,那么请告诉我。
答案 0 :(得分:1)
我不确定在sybase上是否有更简单的方法。
此示例适用于我
declare @val float
declare @val2 float
select @val = 17.666655942234
select @val2 = 17.66
select substring(convert(varchar(30),@val), 1, patindex('%.%',convert(varchar(30),@val)))+reverse(convert(varchar(30),convert(int,reverse(substring(convert(varchar(30),@val), patindex('%.%',convert(varchar(30),@val))+1,6))))) as Val,
substring(convert(varchar(30),@val2), 1, patindex('%.%',convert(varchar(30),@val2)))+reverse(convert(varchar(30),convert(int,reverse(substring(convert(varchar(30),@val2), patindex('%.%',convert(varchar(30),@val2))+1,6))))) as Val2
varchar(15)
declare @val numeric(10,5)
declare @val2 numeric(10,5)
select @val = convert(numeric(10,5),17.666655942234)
select @val2 = convert(numeric(10,5),17.66)
select convert(varchar(15),substring(convert(varchar(15),@val), 1, patindex('%.%',convert(varchar(15),@val)))+reverse(convert(varchar(15),convert(int,reverse(substring(convert(varchar(15),@val), patindex('%.%',convert(varchar(15),@val))+1,6)))))) as Val,
convert(varchar(15),substring(convert(varchar(15),@val2), 1, patindex('%.%',convert(varchar(15),@val2)))+reverse(convert(varchar(15),convert(int,reverse(substring(convert(varchar(15),@val2), patindex('%.%',convert(varchar(15),@val2))+1,6)))))) as Val2