MySQL字母后面數字大小問題
在MySQL中,有一種特殊的數據類型——VARCHAR。VARCHAR就是可變長度的字符串類型,可以存儲任意長度的字符串。
為什么VARCHAR后面要跟數字?
在MySQL中,必須指定VARCHAR類型的最大長度。所以在創建表的時候,要加上數字,表示VARCHAR類型的最大長度。比如說,如果要存儲用戶名,可以這樣定義:
CREATE TABLE user ( id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL );
其中,50就表示name字段的最大長度是50個字符。
大小寫問題
在MySQL中,VARCHAR類型的字段是區分大小寫的。也就是說,'abc'和'ABC'是兩個不同的值。但是,在排序的時候,MySQL會把小寫字母排在大寫字母的前面。
數字大小問題
對于VARCHAR類型的字段,MySQL會按照字典順序進行排序。但是,這個順序并不是按照ASCII碼的順序,而是按照字符集的順序。在UTF-8字符集中,數字是按照字符集的順序排列的。所以,如果你的VARCHAR類型字段中包含數字,它們會按照數字的大小進行排序。
比如說,下面這個表:
CREATE TABLE fruit ( id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, price VARCHAR(10) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果你往里面插入數據:
INSERT INTO fruit (name, price) VALUES ('banana', '10'), ('apple', '9'), ('cherry', '100'), ('pear', '20');
那么,當你查詢fruit表的時候,得到的結果會是這樣的:
+----+--------+-------+ | id | name | price | +----+--------+-------+ | 2 | apple | 9 | | 1 | banana | 10 | | 4 | pear | 20 | | 3 | cherry | 100 | +----+--------+-------+
可以看到,數字會按照大小排序。
上一篇mysql 最新版本特性
下一篇css背景y軸重復