Числовые данные в базе данных не сохраняются в виде текста. Я предполагаю, что это зависит от базы данных, но это, конечно, не обязательно.
BLOB хранятся именно так, как вы их установили - по определению, БД не имеет возможности интерпретировать информацию - я думаю, она может сжаться, если сочтет это полезным. BLOB не переводятся в текст.
Вот как Oracle хранит числа:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#i16209
Внутренний числовой формат
База данных Oracle хранит числовые данные в формате переменной длины. Каждое значение хранится в научной записи: 1 байт используется для хранения показателя степени, а до 20 байт - для хранения мантиссы. Полученное значение ограничено 38 цифрами точности. База данных Oracle не хранит начальные и конечные нули. Например, число 412 хранится в формате, аналогичном 4.12 x 102, с 1 байтом, используемым для хранения показателя степени (2), и 2 байтами, используемыми для хранения трех значащих цифр мантиссы (4,1,2). Отрицательные числа включают знак в длину.
Информация MySQL здесь:
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Посмотрите на таблицу - TINYINT представлен в 1 байте (диапазон от -128 до 127), что невозможно при сохранении в виде текста.
РЕДАКТИРОВАТЬ: с пояснениями - я бы сказал, использовать API на вашем языке, который выглядит примерно так (псевдокод)
stmt = conn.Prepare("SELECT * FROM TABLE where x in (?, ?, ?)");
stmt.SetInt(0, x);
stmt.SetInt(1, y);
stmt.SetInt(2, z);
Я не верю, что базовые протоколы используют текст для передачи параметров.