如何在sql server08中检查区分大小写的密码

时间:2009-05-22 04:36:54

标签: asp.net sql-server

在我的应用程序中,我将密码发送到数据库,假设我的密码是PassworD123。 现在这给了我正确的价值,但是当我使用password123时,也给了我正确的值。那么如何在SQL服务器中查看区分大小写的数据。 任何演示代码都会有帮助。 感谢。

4 个答案:

答案 0 :(得分:5)

为什么不使用加密技术将密码存储在数据库中,例如md5,因为它们会返回不同的散列版本,例如

密码123的Md5 = 482c811da5d5b4bc6d497ffa98491e38

PassworD123的Md5 = bbac8ba35cdef1b1e6c40f82ff8002ea

当你比较它们时,它们显然是不同的。

我认为你正在使用ASP因此我不知道它是否内置了md5()函数,但php确实拥有它。您应该知道的另一件事是,如果您将密码存储在数据库中,最好使用某种无法逆转的加密来存储它们

答案 1 :(得分:2)

您的查询的直接答案如下: http://web.archive.org/web/20080811231016/http://sqlserver2000.databases.aspfaq.com:80/how-can-i-make-my-sql-queries-case-sensitive.html

但是我认为你存储/比较密码的方法有点不对劲。您不应将密码直接存储在数据库中。至少MD5它或什么。

答案 2 :(得分:2)

嗯,简短的回答是使用区分大小写的排序规则 - 更长的答案是don't store plaintext passwords in your database

答案 3 :(得分:2)

您可以在T-SQL语句中使用COLLATE子句。

实施例

SELECT * FROM dbo.TableName WHERE Password = @ password COLLATE SQL_Latin1_General_CP1_CS_AS