SELECT *
FROM mytable
WHERE mynumber BETWEEEN 256 - 2 AND 256 + 2
Если вам просто нужно выбрать первый матч, используйте это:
SELECT *
FROM (
SELECT *
FROM (
SELECT *
FROM (
SELECT *
FROM mytable
WHERE mynumber <= 256
ORDER BY
mynumber DESC
)
WHERE rownum = 1
UNION ALL
SELECT *
FROM (
SELECT *
FROM mytable
WHERE mynumber > 256
ORDER BY
mynumber
)
WHERE rownum = 1
)
ORDER BY
ABS(256 - number), mynumber DESC
)
WHERE rownum = 1
Это более эффективный индекс, так как конечный ORDER BY
будет сортировать не более двух записей.