我试图找到一个表中的所有记录,其中数量小于1.为此,我使用一个简单的查询,但是,我得到的结果,数量是实际的1.这列的类型是浮动的一些奇怪的原因(Dont问为什么,我没有创建)。
SELECT * FROM Table WHERE Quantity < 1
然而,我得到的结果是数量是实际的1.这列的类型是FLOAT,因为一些奇怪的原因(不要问为什么,我没有创建它)。
我怎么知道这一列的具体数值是多少。我试过了。
SELECT
CEILING(quantity) as [Ceiling quantity],
FLOOR(quantity) as [Floor quantity],
CAST(ROUND(Quantity, 2) AS INT) as [Rounded quantity],
Quantity AS [Actual quantity]
FROM Table
但结果是:
Ceiling quantity Floor quantity Rounded quantity Actual quantity
---------------------- ---------------------- ---------------- ----------------------
1 0 1 1
我知道技术上的数量 是 小于一。我试图找到一个像样的方法来获取这一列的实际值,我试图找到表中所有数量小于1的记录。
感谢 @JeroenMostert 提供的正确答案。
SELECT
FORMAT(quantity, 'G17') as [Format quantity]
FROM Table
结果是:
Format quantity
-------------------
0.99999999999999989
CONVERT方法有一种风格,每一个不同的浮点值都保证转换为一个不同的字符串。这是第3种样式,在SQL Server 2016及以后的版本中可用。你可以在这里阅读更多关于convert方法和不同风格的信息。
https:/docs.microsoft.comen-ussqlt-sqlfunctionscast-and-convert-transact-sql。
你可以这样试一试。
SELECT Convert (VARCHAR(99), Quantity, 3) FROM Table