[英]best way to convert float into varchar in sql server
SQL Server 中此 SQL 查詢的正確輸出是什么
DECLARE @dt float;
SET @dt = 12345678912345678912345678912345678912;
SELECT
STR(@dt, 50)
輸出是:
12345678912345680000000000000000000000
我的問題是在 sql server 中為上述值將 float 轉換為 varchar 的最佳方法是什么?
根據 MSDN文檔,您不能使用FLOAT
來存儲精度超過 15 位的任何內容,否則它們將被四舍五入。 要么使用DECIMAL(38)
獲得更好的精度 - 高達 38 並使用CAST
而不是STR
。 STR
將其轉換為浮點數然后轉換為字符串,從而違背了目的。
例如
DECLARE @dt DECIMAL(38);
SET @dt = 12345678912345678912345678912345678912;
SELECT
CAST(@dt AS VARCHAR(50))
您可以做的最接近的是 38 位小數,您可以在下面檢查,但如果超過 38 位,您仍然會丟失一些數字
DECLARE @dt float;
declare @dt1 decimal(38,2)
SET @dt1 = convert(decimal(38,2),123456789123456789123456789123456789.12);
SELECT
convert( varchar(100), @dt1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.