【问题标题】:mssql where md5(tablefield) = md5value?mssql 哪里 md5(tablefield) = md5value?
【发布时间】:2015-02-02 19:42:35
【问题描述】:

我通常不使用 MSSQL,想知道如何匹配存储为字符串的字段值的 md5 值。

在 mysql 中我会使用

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

但我在 mssql 中找不到简单的解决方案。

现在我循环所有帖子并检查循环中的匹配值,但这会变慢。

如何在 MSSQL 中解决这个问题?

我无法在表中添加一个额外的字段并存储 md5 值,所以我必须这样检查。

在php中使用odbc驱动

【问题讨论】:

标签: php sql-server md5


【解决方案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 . '"';

【讨论】:

  • 当给定的 md5value 为 641d77dd5271fca28764612a028d9c8e 时,这给了我“641”附近的错误语法
  • @tobros91:你现在的 SQL 字符串是什么?我怀疑您刚刚添加了不带引号的 MD5 字符串文字。
  • 如果我使用引号,我会得到 Synax 错误,以及整个 MD5 值。 $sql="SELECT * FROM APPLICATION_DETAIL WHERE HASHBYTES('MD5',APPLICATION_ID) = '0x' . '".$key."'";
  • 嗯..我的意思是php中的字符串连接... $sql="SELECT * FROM APPLICATION_DETAIL WHERE HASHBYTES('MD5',APPLICATION_ID) = " 。 '"0x' . $key . '"';
  • 编辑了我的帖子(以及我上面的评论,修正了一个错字)
猜你喜欢
  • 2016-04-21
  • 2018-01-01
  • 2010-12-14
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 2012-07-25
相关资源
最近更新 更多