Non so se esiste una funzione SQL che fa questo, però puoi farlo con una query. Se la tua tabella è del tipo
codice:
id | valore
1 | 10
2 | 20
3 | 70
allora fai
codice:
SELECT id, valore, (ABS(valore - $input)) as diff FROM tabella
WHERE diff = (SELECT MIN(ABS(valore - $input)) FROM tabella)
se il tuo database supporta le query nidificate (MySQL > 4.1 oppure PostgreSQL), altrimenti con un pò di php fai
Codice PHP:
$r = mysql_query("SELECT MIN(ABS(valore - $input)) FROM tabella");
$mindiff = mysql_result($r, 0, 0);
$r = mysql_query("SELECT id, valore FROM tabella WHERE (ABS(valore - $input)) = $mindiff");
$row = mysql_fetch_array($r);