mysql – SQL = vs LIKE vs LIKE BINARY,不区分大小写
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – SQL = vs LIKE vs LIKE BINARY,不区分大小写,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1190字,纯文字阅读大概需要2分钟。
内容图文
![mysql – SQL = vs LIKE vs LIKE BINARY,不区分大小写](/upload/InfoBanner/zyjiaocheng/906/3c0f5b50e6b6452aa39a85a730c54f3b.jpg)
我遇到了SQL LIKE,=和LIKE BINARY相当奇怪的行为
注意:密码的前3个字符实际上是3Vf,查询的其余部分在语法上也是正确的.
SUBSTRING(password,1, 3) = "3VF" -> returns true
SUBSTRING(password,1, 3) = "3Vf" -> returns true
SUBSTRING(password,1, 3) LIKE "3VF" -> returns true
SUBSTRING(password,1, 3) LIKE "3Vf" -> returns true
但是,如果我使用LIKE BINARY,我会得到区分大小写的行为
SUBSTRING(password,1, 3) LIKE BINARY "3VF" -> returns false
SUBSTRING(password,1, 3) LIKE BINARY "3Vf" -> returns true
我不明白为什么比较不区分大小写.考虑密码是VARCHAR(64).在我在网上看到的所有资源中,它表示=和LIKE都是区分大小写的.
注意:我正在运行的完整查询是
SELECT * from users where username="natas16" AND SUBSTRING(password,1, 3) = XX
此外,这不是一个真实世界的应用程序,而是纳塔级别.这是一个’黑客’游乐场.它们具有不同级别的漏洞,您应该利用它们.所以这不是一个现实世界的例子.
http://www.overthewire.org/wargames/natas/
解决方法:
LIKE和=以区分大小写的方式执行操作将取决于您正在进行比较的字段的排序规则.如果您的字段具有非区分大小写的排序规则(就像我猜你的那样),那么您将得到不区分大小写的比较结果.如果字段具有二进制或区分大小写的排序规则,或者如果您在比较中使用BINARY关键字来强制进行二进制比较,则会得到区分大小写的比较.
内容总结
以上是互联网集市为您收集整理的mysql – SQL = vs LIKE vs LIKE BINARY,不区分大小写全部内容,希望文章能够帮你解决mysql – SQL = vs LIKE vs LIKE BINARY,不区分大小写所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。