SELECT ABS($user_value - numeric_field) as nearest, ...
FROM yourtable
ORDER BY nearest ASC
LIMIT 1
som udgangspunkt skal du tage forskellen på det ønskede talfelt og den brugerangivne værdi, sortere efter forskellen stigende og derefter returnere den første række.
Så en nøjagtig match ville have en forskel på 0 og komme først ud. Og vælg så den, der er "tættest", hvis der ikke er noget nøjagtigt match.