在PostgreSQL中找到最接近一个数字的数字

Jor*_*ash 1 postgresql

我有一个这样的数据库:

people
id      name       zip
1       bill       84058
2       susan      90001
3       john       64354
Run Code Online (Sandbox Code Playgroud)

假设我输入的号码为65432

我想写这样的查询:

SELECT * FROM people WHERE zip CLOSEST TO 65432 LIMIT 1

并获得john作为行返回。

我找不到与PostgreSQL最接近的命令

Luk*_*zda 5

您可以使用ABS功能:

SELECT *
FROM people
ORDER BY ABS(65432 - zip) ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)