MariaDB / MySQL查询区分大小写吗?

3

我只想知道这些查询语句是否区分大小写,这些查询语句是相同的吗?

SELECT * FROM Users WHERE login="john";
SELECT * FROM Users WHERE login="John";
SELECT * FROM Users WHERE login="JOHN";
SELECT * FROM Users WHERE login="jOHn";

我已在控制台上尝试过这些方法,都能正常运行,但如果我使用Hibernate或其他任何东西,我想确认一下。谢谢!

1
如果能有某种方法让我们找到答案就好了。 - Strawberry
我也有同样的问题,后来我想在我的设置中尝试一下。结果在这里 https://dev59.com/-pjga4cB1Zd3GeqPL5Dv#60282529 - Arun
1
我在stackoverflow上看到了很多这样的评论。这些评论的模式有时是讽刺或责骂,比如"为什么不试试看呢?" 这是stackoverflow的目的吗?在这里,OP甚至说他们试过了并且它起作用了。他们正在寻找知识渊博的人来[反]对或澄清情况。我认为这是一个合理的stackoverflow问题。我已经厌倦了看到居高临下的评论。 - Mark Goldfain
3个回答

4
根据MySQL文档,默认字符集和排序规则为latin1和latin1_swedish_ci,因此默认情况下非二进制字符串比较是不区分大小写的。至于你问题的第二部分-这个SO答案告诉你如何配置以使搜索区分大小写。

1
使用函数可能是个好主意,例如:SELECT * FROM Users WHERE login=LOWER("john")。 - Ommadawn
1
在MySQL的新版本中,默认值更改为utf8utf8_general_ci。 在这两种情况下,_ci表示“不区分大小写(和重音)”。 在您的查询中,这适用于列login - Rick James
如果您已经正确设置了排序规则,请不要使用 LOWER() - Rick James

1

根据MariaDB文档,它取决于操作系统。对于Windows,不区分大小写。对于Linux,数据库、表、表别名和触发器名称受系统区分大小写的影响,而索引、列、列别名、存储过程和事件名称从不区分大小写。


我现在检查了我的MariaDB,但似乎它不区分大小写(请参见https://dev59.com/-pjga4cB1Zd3GeqPL5Dv#60282529) - Arun
这不是真的。我在GNU/Linux上,我们的遗留MyISAM表的排序规则设置为utf8_bin。因此,搜索区分大小写。当搜索某个值(例如europe而不是Europe)时,我需要执行LOWER(column_name)操作。例如: WHERE LOWER(comment) REGEXP 'picopsu|pico-psu' 因此,这完全取决于表的排序规则,而不是操作系统本身。 - stamster

1

这只是来自我的Linux(Debian 10)Box在MariaDB中的一个示例(Ver.10.3.18-MariaDB-0+deb10u1)。可能对某些人有帮助!

MariaDB [niffdb]> select * from account_heads where head_desc="Fuel";
+---------+-----------+
| head_id | head_desc |
+---------+-----------+
|       1 | Fuel      |
+---------+-----------+
1 row in set (0.004 sec)

MariaDB [niffdb]> select * from account_heads where head_desc="FUEL";
+---------+-----------+
| head_id | head_desc |
+---------+-----------+
|       1 | Fuel      |
+---------+-----------+
1 row in set (0.001 sec)

MariaDB [niffdb]> select * from account_heads where head_desc="fUEL";
+---------+-----------+
| head_id | head_desc |
+---------+-----------+
|       1 | Fuel      |
+---------+-----------+
1 row in set (0.001 sec)

MariaDB [niffdb]>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接