gpt4 book ai didi

sql-server - 为什么这个 Sql Server CAST(..) 将 Decimal 舍入为 VarChar?

转载 作者:行者123 更新时间:2023-12-03 16:48:23 28 4
gpt4 key购买 nike

我正在尝试将一些 decimals 转换为 varchar,但它们正在变得四舍五入

谁能告诉我为什么?

declare @UpperLeftLatitude DECIMAL,
@UpperLeftLongitude DECIMAL,
@BottomRightLatitude DECIMAL,
@BottomRightLongitude DECIMAL

SET @UpperLeftLatitude = 38.663
SET @UpperLeftLongitude = -122.857
SET @BottomRightLatitude = 37.795
SET @BottomRightLongitude = -121.219


DECLARE @SearchRectangleString VARCHAR(MAX);
SET @SearchRectangleString = 'POLYGON((' + CONVERT(VARCHAR(50), @UpperLeftLatitude) + ' ' + CAST(@UpperLeftLongitude AS VARCHAR(50)) + ','
+ CAST(@BottomRightLatitude AS VARCHAR(50)) + ' ' + CAST(@UpperLeftLongitude AS VARCHAR(50)) + ','
+ CAST(@BottomRightLatitude AS VARCHAR(50)) + ' ' + CAST(@BottomRightLongitude AS VARCHAR(50)) + ','
+ CAST(@UpperLeftLatitude AS VARCHAR(50)) + ' ' + CAST(@BottomRightLongitude AS VARCHAR(50)) + ','
+ CAST(@UpperLeftLatitude AS VARCHAR(50)) + ' ' + CAST(@UpperLeftLongitude AS VARCHAR(50)) + '))';

SELECT @SearchRectangleString

-------------------
POLYGON((39 -123,38 -123,38 -121,39 -121,39 -123))

(1 row(s) affected)

注意:是的,我知道我的纬度/经度是错误的。我会尽快更换它们。

最佳答案

这是因为你的小数没有指定长度。它们不存储任何小数位。

尝试以下操作:

 DECLARE @test DECIMAL, @test2 DECIMAL(8,4)
SET @test = 12.3456
SET @test2 = 12.3456

SELECT @test, @test2

关于sql-server - 为什么这个 Sql Server CAST(..) 将 Decimal 舍入为 VarChar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3350801/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com