Я бы хотел уточнить точно , что я имел в виду под "параметрами", поскольку в последнем комментарии ОП использовалось слово "санировано".
SQL разрешает использование «параметров» в выражении SQL, обозначенных вопросительными знаками, которые не литеральные строки, например:
SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = ?
Каждый раз, когда выполняется оператор, необходимо указывать значение для каждого параметра, обычно в виде массива значений. (Конечно, большинство актуальных API баз данных более дружественны, позволяя удобно «назвать» ваши параметры.) Таким образом, параметры никогда не являются частью строки SQL .
Оператор SQL анализируется («подготавливается») только один раз, и ядро СУБД знает, что значения параметров должны предоставляться каждый раз при выполнении оператора. Механизм запросов будет принимать и использовать эти значения параметров напрямую; это не будет переоценивать SQL. (что, кстати, заметно эффективнее!)
Предоставленные вами двоичные значения используются как есть. Вам даже не нужно конвертировать их в символьную форму. В частности, вы не"санируйте" их ! Если вы предоставите значение, например FOO%20BAR
, для некоторого столбца символьного типа в операторе INSERT
, вы обнаружите, что литеральное значение 9 -характера будет вставлено в вашу базу данных: F-O-O-%-2-0-B-A-R
. «Это те 9 символов, которые ты мне дал, вот что я сделал».
(Системы баз данных и интерфейсы к ним различаются по обработке типов данных, таких как «дата».)