相关疑难解决方法(0)

TSQL-使文字浮点值

我了解比较浮点数的许多问题,并在这种情况下对它们的使用感到遗憾-但我不是表格的作者,攀爬的障碍很小。

有人决定使用浮点数,因为您希望使用GUID。我需要检索具有特定浮点值的所有记录。

sp_help MyTable

-- Column_name  Type    Computed    Length  Prec
-- RandomGrouping   float   no  8   53   
Run Code Online (Sandbox Code Playgroud)

这是我天真的尝试:

--yields no results
SELECT RandomGrouping
FROM MyTable
WHERE RandomGrouping = 0.867153569942739
Run Code Online (Sandbox Code Playgroud)

这是一个大概的工作尝试:

--yields 2 records
SELECT RandomGrouping
FROM MyTable
WHERE RandomGrouping BETWEEN 0.867153569942739 - 0.00000001
      AND 0.867153569942739 + 0.00000001

--  0.867153569942739
--  0.867153569942739
Run Code Online (Sandbox Code Playgroud)

在我幼稚的尝试中,该文字是浮点文字吗?还是真的是十进制文字,以后会转换?

如果我的文字不是浮点文字,那么制作浮点文字的语法是什么?

编辑:我发生了另一种可能性...它可能是比显示的更精确的数字存储在此列中。创建表示该数字的文字可能是不可能的。我将接受证明确实如此的答案。


编辑:对DVK的回应。

TSQL是MSSQLServer的SQL方言。

该脚本有效,因此可以确定性地在float类型之间执行相等操作:

DECLARE @X float
SELECT top 1 @X = RandomGrouping
FROM MyTable
WHERE RandomGrouping BETWEEN 0.839110948199148 - 0.000000000001
  AND 0.839110948199148 + 0.000000000001
  --yields two records …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server floating-point literals

5
推荐指数
2
解决办法
3822
查看次数

标签 统计

floating-point ×1

literals ×1

sql ×1

sql-server ×1

t-sql ×1