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 . '"';
Другие вопросы по тегам