SELECT ABS($user_value - numeric_field) as nearest, ...
FROM yourtable
ORDER BY nearest ASC
LIMIT 1
i princip, ta skillnaden mellan nummerfältet du vill ha och det användarangivna värdet, sortera sedan efter skillnaden stigande och returnera sedan den första raden.
Så en exakt matchning skulle ha en skillnad på 0 och komma ut först. Och välj sedan ut den som är "närmast" om det inte finns någon exakt matchning.