postgre如何选择接近值但不需要是SQL中的确切值的数据?



我需要在SQL中使用Select进行查询,其中我必须显示哪个字段更接近数字PI(3,141592...(。我该怎么做?

select * from Table where --????;

对于 MySQL 和 PostgreSQL,您可以按ABS(col - 3.141592)对结果进行排序,并使用LIMIT 1获得最接近的值,例如

SELECT col
FROM yourtable
ORDER BY ABS(col - 3.141592)
LIMIT 1

对于 SQL Server,请使用TOP 1 col并删除LIMIT 1;对于 ANSI SQL,您可以使用FETCH FIRST 1 ROW代替LIMIT 1

Postgres有一个方便的函数pi()所以你不需要对值进行硬编码。 所以:

select t.*
from Table t
order by abs(t.col - pi())
limit 1;

最新更新