MySQL 8 是目前最新的 MySQL 數據庫版本。在 MySQL 8 中,我們可以使用 COLLATION 字符集來控制字符串的排序和比較方式。而對于大小寫的處理,MySQL 8 默認不區分大小寫。
為了更好地理解 MySQL 8 不區分大小寫的原因,我們可以看下面這個例子:
CREATE TABLE myTable ( myColumn VARCHAR(10) COLLATE utf8mb4_general_ci ); INSERT INTO myTable (myColumn) VALUES ("Hello"), ("hello"), ("HELLO"); SELECT * FROM myTable WHERE myColumn = "hello";
在上面的例子中,我們創建了一張表,其中一個列的默認字符集為 utf8mb4_general_ci。接著插入了三條數據,分別是 "Hello"、"hello" 和 "HELLO"。最后我們使用 WHERE 子句來查詢 myColumn 等于 "hello" 的數據。在 MySQL 8 中,這條查詢語句會返回三條數據:
Hello hello HELLO
這是因為在默認的字符集 utf8mb4_general_ci 中,"hello" 和 "HELLO" 被視為相同的。因此,對于 MySQL 8 用戶來說,不需要再手動地區分大小寫,這很大程度上減輕了編程人員的工作負擔。
當然,如果需要在 MySQL 8 中區分大小寫,我們可以使用 COLLATE BINARY 字符集。在這個字符集中,大小寫是被視為不同的,因此查詢時必須精確匹配。
CREATE TABLE myTable ( myColumn VARCHAR(10) COLLATE utf8mb4_bin ); INSERT INTO myTable (myColumn) VALUES ("Hello"), ("hello"), ("HELLO"); SELECT * FROM myTable WHERE myColumn = "hello";
在上面的例子中,我們使用了 COLLATE utf8mb4_bin 字符集來創建了一張表。這個字符集在比較字符串時是區分大小寫的。因此最后的查詢語句只返回了一條數據:
hello
總之,MySQL 8 不區分大小寫可以大大方便開發者的工作。如果需要區分大小寫,我們也可以使用 COLLATE BINARY 字符集來實現。