相关疑难解决方法(0)

Sql Server - nvarchar字段的索引

保持nvarchar字段唯一的好方法是什么.我有一个存储mp3文件网址的字段.url长度可以是10个字符到4000之间的任何值.我试图创建一个索引,它说它不能创建索引,因为总长度超过900个字节.

如果该字段未编入索引,则搜索任何内容的速度都会很慢.我正在使用c#,asp.net mvc作为前端.

问候

Paraminder

sql sql-server nvarchar

13
推荐指数
2
解决办法
1万
查看次数

是否可以直接用T-SQL语言计算MD5哈希?

我需要在我们的Sql Server 2000数据库中散列(MD5)所有密码.我可以轻松地生成一个C#/ VB.NET程序来转换(哈希)所有密码,但我想知道(更多的是我的教育而不是真正迫切需要),如果有可能直接在T-SQL中计算MD5哈希.
感谢任何愿意回答的人.

t-sql sql-server hash md5 sql-server-2000

8
推荐指数
2
解决办法
2万
查看次数

计算UTF8字符串的MD5哈希值

我有一个SQL表,我在其中存储必须唯一的大字符串值.为了确保唯一性,我在列上有一个唯一索引,我在其中存储大字符串的MD5哈希的字符串表示.

保存这些记录的C#应用​​程序使用以下方法进行散列:

public static string CreateMd5HashString(byte[] input)
{
    var hashBytes = MD5.Create().ComputeHash(input);
    return string.Join("", hashBytes.Select(b => b.ToString("X")));
}
Run Code Online (Sandbox Code Playgroud)

为了调用此,我首先转换stringbyte[]使用UTF-8编码:

// this is what I use in my app
CreateMd5HashString(Encoding.UTF8.GetBytes("abc"))
// result: 90150983CD24FB0D6963F7D28E17F72
Run Code Online (Sandbox Code Playgroud)

现在我希望能够在SQL中使用该HASHBYTES函数实现这个散列函数,但是我得到了一个不同的值:

print hashbytes('md5', N'abc')
-- result: 0xCE1473CF80C6B3FDA8E3DFC006ADC315
Run Code Online (Sandbox Code Playgroud)

这是因为SQL计算字符串的UTF-16表示的MD5.如果我这样做,我会在C#中获得相同的结果CreateMd5HashString(Encoding.Unicode.GetBytes("abc")).

我无法改变在应用程序中完成散列的方式.

有没有办法让SQL Server计算字符串的UTF-8字节的MD5哈希值?

我查了类似的问题,我尝试使用整理,但到目前为止没有运气.

t-sql sql-server hash encoding sql-server-2008-r2

4
推荐指数
1
解决办法
3685
查看次数