フィールドを に変換する必要がありますがfloat
、string
次の制限があります
- 小数点以下 6 桁以降の結果を切り捨てる必要がある
- 10 進数の後の末尾のゼロを切り捨てます
例えば:
- 17.666655942234 ==> 文字列「17.666655」に変換
- 17.6 ==> 「17.600000」ではなく、文字列「17.6」に変換
- 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
#一時データ
id | product_price
-------------------
1 | 17.3435302323
2 | 17.700000000
3 | 17.60
4 | 19.0
私はクエリを複雑にしており、より単純なバージョンが存在するはずです。
これは高級言語で簡単に処理できることはわかっていますが、クエリ自体に簡単に対応できる場合はお知らせください。