MySQL char類型

在本教學中,您將瞭解MySQL CHAR數據類型以及如何將其應用於資料庫表設計。

MySQL CHAR數據類型簡介

CHAR數據類型是MySQL中固定長度的字元類型。 我們經常聲明CHAR類型,其長度指定要存儲的最大字符數。 例如,CHAR(20)最多可以容納20個字元。

如果要存儲的數據是固定大小,則應使用CHAR數據類型。在這種情況下,與VARCHAR相比,您將獲得更好的性能。

CHAR數據類型的長度可以是從0255的任何值。當存儲CHAR值時,MySQL將其值與空格填充到聲明的長度。

當查詢CHAR值時,MySQL會刪除尾部的空格。

請注意,如果啟用PAD_CHAR_TO_FULL_LENGTH SQL模式,MySQL將不會刪除尾隨空格。

以下語句創建具有CHAR列的表。

USE testdb;

CREATE TABLE mysql_char_test (
    status CHAR(3)
);

status列使用CHAR數據類型,並有指定最多可容納3個字元。

現在,使用以下語句向mysql_char_test表中插入2行數據。

INSERT INTO mysql_char_test(status)
VALUES('Yes'),('No');

下麵我們使用length函數來獲取每個CHAR值的長度。

SELECT
    status, LENGTH(status)
FROM
    mysql_char_test;

執行上面查詢語句,得到以下結果 -

+--------+----------------+
| status | LENGTH(status) |
+--------+----------------+
| Yes    |              3 |
| No     |              2 |
+--------+----------------+
2 rows in set

以下語句將插入帶有前導和尾隨空格的CHAR值。

INSERT INTO mysql_char_test(status)
VALUES(' Y ');

但是,當我們檢索該值時,MySQL會刪除尾隨空格。

SELECT
    status, LENGTH(status)
FROM
    mysql_char_test;

執行上面查詢語句,得到以下結果 -

+--------+----------------+
| status | LENGTH(status) |
+--------+----------------+
| Yes    |              3 |
| No     |              2 |
|  Y     |              2 |
+--------+----------------+
3 rows in set

比較MySQL CHAR值

存儲或比較CHAR值時,MySQL使用分配給列的字元集排序規則。

使用比較運算符比較CHAR值時,MySQL不會考慮尾隨空格,例如:=<>><等等。

請注意,當您使用CHAR值進行模式匹配時,LIKE運算符會考慮尾隨空格。

在前面的例子中,我們將值Y的前面和後面都加空格存儲。 但是,當執行以下查詢時:

mysql> SELECT
    *
FROM
    mysql_char_test
WHERE
    status = 'Y';
Empty set

MySQL沒有返回任何行記錄,因為它不考慮尾隨空格。 要與“Y”匹配,需要刪除尾隨空格:

SELECT
    *
FROM
    mysql_char_test
WHERE
    status = ' Y';

執行上面查詢語句,得到以下結果 -

+--------+
| status |
+--------+
|  Y     |
+--------+
1 row in set

MySQL CHAR和UNIQUE索引

如果CHAR列具有UNIQUE索引,並且插入的值有多個尾隨空格不同的值,則MySQL將拒絕因重複鍵錯誤而要求您進行的更改。

請參見以下示例

首先,為mysql_char_test表的status創建唯一的索引

CREATE UNIQUE INDEX uidx_status ON mysql_char_test(status);

其次,在mysql_char_test表中插入一行

INSERT INTO mysql_char_test(status)
VALUES('N ');

Error Code: 1062. Duplicate entry 'N' for key 'uidx_status'

在本教學中,我們向您介紹了MySQL CHAR數據類型及其功能。 現在,相信您應該很好地瞭解CHAR數據類型,以將其應用於資料庫設計。


上一篇: MySQL數據類型 下一篇: MySQL技巧