【发布时间】:2011-04-25 20:49:29
【问题描述】:
当我尝试运行这样的 SQL 语句时遇到类型不匹配错误:
Dim s
s = "test"
"SELECT id FROM mytable WHERE sha1bin = " & SHA1bin(s)
这是我的 SHA1bin 函数:
Private Function SHA1Bin(s)
Dim asc, enc, bytes
Set asc = CreateObject("System.Text.UTF8Encoding")
Set enc = CreateObject("System.Security.Cryptography.SHA1CryptoServiceProvider")
bytes = asc.GetBytes_4(s)
SHA1Bin = enc.ComputeHash_2((bytes))
Set asc = Nothing
Set enc = Nothing
End Function
据我了解,VBScript 并没有真正的二进制数据类型。我需要做什么来进行这种比较,还是应该将其存储为 40 个字符的十六进制值,以便进行文本比较?
【问题讨论】:
-
您使用的是哪个版本的 SQL Server?另外,你试过
"SELECT id FROM mytable WHERE sha1bin = '" & SHA1bin(s) & "'"吗? -
SQL Server 2008 速成版。我用引号试过了,没有用。 SQL Server 2008 确实有一个 HashBytes 函数。如果我将代码更改为使用存储过程,我想我可以使用它。有什么方法可以在我的 SQL 语句中使用该函数?
标签: sql sql-server asp-classic vbscript binary-data