簡體   English   中英

在sql server中將float轉換為varchar的最佳方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM