字符类型

2018-09-12  本文已影响0人  knot98
# 注意: 宽度指的是字符个数
char: 定长
    char(5)

varchar: 变长
    varchar(5)

相同点: 宽度指的都是最大存储的字符个数,超过了就无法正常存储
不同点:
    char(5)
        'a' ---> 5个字符(不够个数用空格补充)
        |a    |at   |set  |like |where|
    varchar(5)
        'a' ---> 1个字符
        1bytes+a|1bytes+at|1bytes+set|1bytes+like|1bytes+where|
        如果真实的数据<255bytes则需要1Bytes的前缀(1Bytes=8bit 2**8最大表示的数字为255)
        如果真实的数据>255bytes则需要2Bytes的前缀(2Bytes=16bit 2**16最大表示的数字为65535)

查询某个字段:
    select * from 表名 where 字段名 = ' ';

    注意: mysql 在查询时针对where 字段= ''时会忽略掉右面的空格,即where 字段 = '值';

    select * from 表名 where name like 'x%';
    # '%' 指的是查找所有以x开头的数据
    select * from 表名 where name like 'x__';
    # _填充完整字符长度,才能查找到

# 宽度相关练习

mysql> create table tab(a char(5),b varchar(5));
Query OK, 0 rows affected (0.02 sec)

# char 存3个字符, varchar 存2个字符
mysql> insert into tab values('a  ','b ');
Query OK, 1 row affected (0.01 sec)

mysql> select a,char_length(a),b,char_length(b) from tab;
+------+----------------+------+----------------+
| a    | char_length(a) | b    | char_length(b) |
+------+----------------+------+----------------+
| a    |              1 | b    |              2 |
+------+----------------+------+----------------+
1 row in set (0.00 sec)

mysql> SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
Query OK, 0 rows affected (0.00 sec)

mysql> select a,char_length(a),b,char_length(b) from tab;
+-------+----------------+------+----------------+
| a     | char_length(a) | b    | char_length(b) |
+-------+----------------+------+----------------+
| a     |              5 | b    |              2 |
+-------+----------------+------+----------------+
1 row in set (0.00 sec)
上一篇 下一篇

猜你喜欢

热点阅读