sql严格等于,有什么事吗?

Omu*_*Omu 5 sql sql-server

可能重复:
SQL服务器忽略where表达式中的大小写

基本上我需要检查这样的事情

select * from users where name = @name, pass = @pass
Run Code Online (Sandbox Code Playgroud)

问题是 'pass' = 'pAsS'

sql中是否存在更严格的字符串比较(ms sql-server)

Dav*_*d M 7

这取决于你的整理,它似乎不区分大小写.例如,标准排序规则是Latin1_General_CI_AS,CI表示不区分大小写.您可以强制使用不同的协作进行不同的比较:

select  *
from    users
where   name = @name
and     pass COLLATE Latin1_General_CS_AS = @pass COLLATE Latin1_General_CS_AS
Run Code Online (Sandbox Code Playgroud)

顺便说一下,你不应该在你的数据库中存储密码 - 你应该对它们进行盐化和散列.

  • 确实是 - 区分大小写的二进制! (3认同)