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 | +----+--------+-------+
可以看到,数字会按照大小排序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。