mssql где md5 (поле таблицы) = значение md5?

0

Обычно я не работаю с MSSQL и задаюсь вопросом, как я могу сопоставить значение md5 значения поля, хранящегося в виде строки.

В mysql я бы использовал

SELECT * FROM table WHERE md5(field) = $md5value 

но я не могу найти простое решение для этого в mssql.

Теперь я петлю все сообщения и проверяю соответствие совпадающего значения в цикле, но это способ замедлить работу.

Как это решить в MSSQL?

У меня нет возможности добавить дополнительное поле в таблицу и сохранить значение md5, поэтому я должен выполнить проверку таким образом.

Использование драйвера odbc в php.

Теги:
sql-server
md5

1 ответ

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 . '"';
  • 0
    Это дает мне неправильный синтаксис около '641', когда заданное значение md5 равно 641d77dd5271fca28764612a028d9c8e
  • 1
    @ tobros91: какая сейчас у вас строка SQL? Я подозреваю, что вы только что добавили строковый литерал MD5 без кавычек.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню