或许你已经发现字符串在程序世界中的重要性, 下边我们就来看看Mysql中字符串的类型和函数吧
字符串类型 | 字节 | 描述及存储需求 |
char(M) | M | M为0~255之间的整数 |
varchar(M) | M | M为0~65535之间的整数, 值的长度+1个字节 |
TINYBLOB | 允许长度0-255字节, 值的长度+1个字节 | |
BLOB | 允许长度0-65535字节, 值的长度+2个字节 | |
MEDIUMBLOB | 允许长度0-167772150字节, 值的长度+3个字节 | |
LONGBLOB | 允许长度0-4294967295字节, 值的长度+4个字节 | |
TINYTEXT | 允许长度0-255字节, 值的长度+2个字节 | |
TEXT | 允许长度0-65535字节, 值的长度+2个字节 | |
MEDIUMTEXT | 允许长度0-167772150字节, 值的长度+3个字节 | |
LONGTEXT | 允许长度0-4294967295字节, 值的长度+4个字节 | |
VARBINARY(M) | M | 允许长度0~M个字节的变长字符串, 值的长度+1个字节 |
BINARY(M) | M | 允许长度0~M个字节的定长字节字符串 |
BLOB 和 TEXT 的区别
BLOB 列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符串)。BLOB列没有字符集,并且排序和比较基于列值字节的数值值。TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较。
在TEXT或BLOB列的存储或检索过程中,不存在大小写转换。
当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告。
在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。同样,可以将TEXT列视为VARCHAR列。BLOB和TEXT在以下几个方面不同于VARBINARY和VARCHAR:
· 当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同)。
请注意比较时将用空格对TEXT进行扩充以适合比较的对象,正如CHAR和VARCHAR。
· 对于BLOB和TEXT列的索引,必须指定索引前缀的长度。对于CHAR和VARCHAR,前缀长度是可选的。
· BLOB和TEXT列不能有 默认值。
函数 | 功能 |
concat(s1, s2, ... , sn) | 连接s1, s2, ..., sn 为一个字符串 |
insert(str, x, y, instr) | 将字符串str从第x位置开始, y个字符长度的子字符串替换为字符串instr |
lower(str) | 将字符串str中所有的字符转换为小写 |
upper(str) | 将字符串str中所有的字符转换为大写 |
left(str, x) | 返回字符串str最左边的x个字符 |
right(str, y) | 返回字符串str最右边的y个字符 |
lpad(str, n, pad) | 用字符串pad对str最左边进行填充, 直到长度为n个字符长度 |
rpad(str, n, pad) | 用字符串pad对str最右边进行填充, 直到长度为n个字符长度 |
ltrim(str) | 去掉str中最左边的空格 |
rtrim(str) | 去掉str中最右边的空格 |
repeat(str, x) | 返回str中重复出现x次的结果 |
replace(str, a, b) | 将字符串str中的a更换为b |
strcmp(s1, s2) | 比较字符串s1, s2 |
trim(str) | 去掉字符串str两边的空格 |
substring(str, x, y) | 返回字符串str x位置开始y个字符长度的字符串 |