小编Joe*_*ron的帖子

SQL Server 浮点数据类型超出范围

我有一个查询,我通过扩展事件会话捕获了一个浮点数据类型,如下所示:

@variable = 120700.8000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

如果我尝试在 SSMS 中运行相同的查询,则会收到错误消息: 数字“120700.8000000000000000000000000000000000000000000000”超出了数字表示的范围(最大精度 38)。

就像你要跑步一样

DECLARE @variable float = 120700.8000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

跟踪运行时查询成功。事件是 rpc_completed 并且它具有持续时间、CPU、行数等...

不确定这是否相关,但有问题的查询是 exec sp_executeSQL。跟踪捕获的完整查询如下所示:

exec sp_executeSQL N'SELECT
    col1,
    col2
FROM table
WHERE col3 > @variable', N'@variable float', 
@variable = 120700.8000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,为什么跟踪中的代码能够毫无错误地执行,但是当我将相同的代码复制/粘贴到 SSMS 时,它会引发错误。如果我采用相同的代码并修剪掉一堆零,它就可以工作。

我在 SQL Azure DB 上运行。我已经在兼容性 SQL2016、SQL2019 和 Prem SQL2019 上进行了复制。

sql-server precision sqldatatypes

10
推荐指数
1
解决办法
739
查看次数

标签 统计

precision ×1

sql-server ×1

sqldatatypes ×1