编码格式UTF8下中文长度

首先理解一下基本概念,

字符:一种符号,ABCD,中文,都是文字符号,所以叫字符

字节:Byte简写B, 跟字节跳动Byte Dance一个东西。计算机的基本存储单位

二进制位:bit(Binary Digits)简写b,是比特币BitCoin的bit一个东西,计算机最小传输单位---0/1

三者对应关系如下表:

字符一个中文或标点一个英文或标点1个阿拉伯数字一个
字节 byte2(其他编码)~3(UTF)111
位bit*8888

常用总结: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才能获取正确的值。

  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值