首先理解一下基本概念,
字符:一种符号,ABCD,中文,都是文字符号,所以叫字符
字节:Byte简写B, 跟字节跳动Byte Dance一个东西。计算机的基本存储单位
二进制位:bit(Binary Digits)简写b,是比特币BitCoin的bit一个东西,计算机最小传输单位---0/1
三者对应关系如下表:
字符 | 一个中文或标点 | 一个英文或标点 | 1个阿拉伯数字 | 一个 |
字节 byte | 2(其他编码)~3(UTF) | 1 | 1 | 1 |
位bit | *8 | 8 | 8 | 8 |
常用总结:1字节(byte)=8 位 bit, 1024 byte= 1KB 1024KB = 1MB ……
MYSQL中统计字符串长度可以用Length 和char_length,英文都是1的长度,中文区别如下表:
函数 | 统计单位 | 例子 | 长度返回值 |
char_length | 字符数量 | 赵 | 1 |
length | 字节数量 | 赵 | 2 or 3 看编码格式 |
select length('赵:某001') as len,CHAR_LENGTH('赵:某001') as char_len
对于Subtring,实践显示中文是统计的字符数:
select SUBSTRING('赵:某001',1,1) as lastname,SUBSTRING('赵:某001',3,1) as firstname;--指定两个参数表示开始位子,截取长度
select SUBSTRING('赵:某001',1) as lastname ,SUBSTRING('赵:某001',3) as firstname; --指定一个参数表示开始位子到结束
select SUBSTR('赵:某001',1,1) as lastname ,SUBSTR('赵:某001',3,1) as firstname--跟第一个一样的,开始,长度
基于以上结果,substring的时候截取,如果截取始末位子用到以上两个length函数,要小心开始结束position才能获取正确的值。
标签:编码,字节,UTF8,length,SUBSTRING,001,格式,bit,select From: https://blog.csdn.net/weixin_47082271/article/details/140132718