SELECT ABS($user_value - numeric_field) as nearest, ...
FROM yourtable
ORDER BY nearest ASC
LIMIT 1
basicamente, pegue a diferença do campo numérico que você deseja e o valor fornecido pelo usuário, classifique pela diferença crescente e retorne a primeira linha.
Portanto, uma correspondência exata teria uma diferença de 0 e sairia primeiro. E, em seguida, escolha o que for "mais próximo" se não houver correspondência exata.