为啥sql比较忽略大小写[重复]

Posted

技术标签:

【中文标题】为啥sql比较忽略大小写[重复]【英文标题】:why does sql comparison ignore case [duplicate]为什么sql比较忽略大小写[重复] 【发布时间】:2019-12-10 04:50:15 【问题描述】:

我正在做一些 sqli 挑战(overthewire.org,natas Web 应用程序挑战),在其中一个 sqli 挑战中我遇到了以下问题。

当我比较 substr(password,1,1)="a" 时,它会忽略大小写。比如

Select * from users where username="user" and substr(password,1,1)='a'

将是真实的,所以将是

Select * from users where username="user" and substr(password,1,1)='A'

如果我使用

`Select * from users where username="user" and ascii(substr(password,1,1))=ascii('a')` 

反而一切正常。

有人知道为什么要这样实施吗?这是默认的mysql行为吗? 最好的

【问题讨论】:

谢谢,后面的基本上就是我要找的答案了。 【参考方案1】:

简而言之,您可以指定数据库将使用的排序规则,并且大多数默认设置为不区分大小写的排序规则,因此在比较文本时会忽略大小写。

https://dev.mysql.com/doc/refman/8.0/en/charset-general.html

【讨论】:

以上是关于为啥sql比较忽略大小写[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在忽略大小写的sql中比较字符串?

忽略词缀检查器的大小写[重复]

sql怎么查询出两列字段相同的数据(在忽略英文大小写和空格的情况下)

为啥 LaTeX 会忽略文档类中的字体大小 [关闭]

比较 char 忽略大小写的正确方法是啥?

比较 char 忽略大小写的正确方法是啥?