mssql где md5(поле таблицы) = значение md5?
Я обычно не работаю с MSSQL и удивляюсь, как я могу сопоставить значение md5 значения поля, хранящегося в виде строки.
В MySQL я бы использовал
SELECT * FROM table WHERE md5(field) = $md5value
но я не могу найти простое решение для этого в mssql.
Теперь я зацикливаю все сообщения и проверяю совпадение значений в цикле, но это медленный способ.
Как мне решить это в MSSQL?
У меня нет возможности добавить дополнительное поле в таблицу и сохранить значение md5, поэтому я должен выполнить проверку таким образом.
Использование драйвера odbc в php.
1 ответ
MSSQL не использует MD5(), а функцию с именем HASHBYTES:
SELECT * FROM table WHERE HASHBYTES('MD5',field) = $md5value
Эта функция добавляет '0x' к хешу, поэтому для полной проверки вам необходимо:
SELECT * FROM table WHERE HASHBYTES('MD5',field) = '0x' . $md5value
Редактировать: в PHP это выглядит так:
$query = "SELECT * FROM table WHERE HASHBYTES('MD5',field) = \"0x" . $md5value . '"';