SELECT ABS($user_value - numeric_field) as nearest, ...
FROM yourtable
ORDER BY nearest ASC
LIMIT 1
básicamente, tome la diferencia del campo numérico que desea y el valor proporcionado por el usuario, luego ordene por diferencia ascendente y luego devuelva la primera fila.
Entonces, una coincidencia exacta tendría una diferencia de 0 y saldría primero. Y luego elija el que sea "más cercano" si no hay una coincidencia exacta.