数据在表中存储时是否区分大小写?

5

我有三个表格示例。我使用mysql在数据库中存储数据。

+--------------------------+
| Table-1                  |
+--------------------------+
| Sl.No | Name | City      |
+-------+------+-----------+
|  1    | Carl | Australia |
+-------+------+-----------+

+--------------------------+
| Table-1                  |
+--------------------------+
| Sl.No | Name | City      |
+-------+------+-----------+
|  1    | carl | australia |
+-------+------+-----------+

+--------------------------+
| Table-1                  |
+--------------------------+
| Sl.No | Name | City      |
+-------+------+-----------+
|  1    | CARL | AUSTRALIA |
+-------+------+-----------+
  • 我们可以清楚地看到每个表中有一行数据
  • 数据的性质是相同的

我所做的是使用不同的大小写字母,有些是大写字母,有些是小写字母。

数据库中存储的数据是否区分大小写?


3
“区分大小写”的目的是什么?存储的数据只是数据,不被解释为任何东西,也不被执行为代码,它只是原始数据。你对这些数据所做的任何操作可能是大小写敏感或不敏感的。在原始数据级别上,“Carl”和“CARL”的二进制表示是不同的,因此数据也是不同的。但是,使用该数据的任何程序可能并不关心这种差异。 - David
数据存储的方式与输入时相同(大写、小写、混合),但是MySQL SQL选择语句默认情况下不区分大小写:https://dev59.com/TGsz5IYBdhLWcg3wfn-6 - Germann Arlington
2个回答

6

数据只是以原始数据的形式存储。但如果您想以任何特定格式获取数据,可以格式化它。您可以根据自己的方便插入数据,但内部它们被解释为相同,即ABC与abc和aBc相同

默认情况下,MySQL查询不区分大小写。

MySQL网站中了解:

底层操作系统的大小写敏感性对数据库和表名的大小写敏感性起作用。这意味着在Windows中,数据库和表名不区分大小写,在大多数Unix版本中区分大小写。一个值得注意的例外是Mac OS X,它基于Unix,但使用默认文件系统类型(HFS+)不区分大小写。然而,Mac OS X也支持UFS卷,它们像任何Unix一样区分大小写。

附带说明:-

在数据库内,所有数据都以二进制格式存储。您可以有不同的数据类型,计算机用它来解释如何向用户显示数据,但那只是个幌子。


5

是的,数据库会按照你提交的方式存储数据。

例如,如果您说:

INSERT INTO MyTable (LowerCase, UpperCase) VALUES ("abcd", "ABCD");

它将插入:

LowerCase | UpperCase
abcd      | ABCD

如果你这样做

INSERT INTO MyTable (LowerCase, UpperCase) VALUES ("AbCd", "aBcD");

它将插入:

LowerCase | UpperCase
AbCd      | aBcD

您需要对输入进行消毒,以达到所需的效果,或者只是按照输入直接处理。

但是,当我执行一个

SELECT * FROM MyTable WHERE LowerCase="abcd";

它将返回两个条目。

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