选择小数位数超过4的数字

Ber*_*eSF 12 sql sql-server sql-server-2008

我有一个SQL表,其中一个浮点列填充了以下值:

  1.4313
  3.35
  2.55467
  6.22456
  3.325
Run Code Online (Sandbox Code Playgroud)

我需要选择仅包含超过4位小数的值的行.在这种情况下,select必须返回:

2.55467
6.22456
Run Code Online (Sandbox Code Playgroud)

想法?谢谢!

这是我到目前为止所尝试的

select * 
from table 
where CAST(LATITUDE AS DECIMAL(10,5)) - LATITUDE = 0
Run Code Online (Sandbox Code Playgroud)

Unh*_*ean 18

DECLARE @tbl TABLE (val float)
INSERT INTO @tbl SELECT 1234.567
INSERT INTO @tbl SELECT 1234.5678
INSERT INTO @tbl SELECT -1234.5678
INSERT INTO @tbl SELECT 1234.56789

SELECT *
from @tbl
where (((abs(val)*10000) - CONVERT(INT,(abs(val)*10000))) <> 0)
Run Code Online (Sandbox Code Playgroud)


Ali*_*had 9

为什么我们不能通过这个查询简化: -

SELECT * FROM table WHERE val LIKE '%.____%'
Run Code Online (Sandbox Code Playgroud)

这选择了我们想要的

  • 鉴于我的答案中的示例数据,该解决方案不起作用。 (2认同)

tor*_*rno 5

给出的答案对 MaxDb 不起作用,但这样做了:

where FLOOR(value * 10000) != value * 10000
Run Code Online (Sandbox Code Playgroud)

来源

减少/增加 0 以降低/提高精度。


Luk*_*kas 5

另一种解决方案也是:

SELECT * from table
where (round(value,2) - round(value,4) <> 0)
Run Code Online (Sandbox Code Playgroud)


Bru*_*cca 5

这适用于 Postgres 11:

SELECT * FROM mytable WHERE mycolumn != ROUND(mycolumn::numeric,2)
Run Code Online (Sandbox Code Playgroud)