mysql中的BIT_LENGTH和LENGTH以及CHAR_LENGTH的区别
mysql中获取字符的长度的常见函数有以上三种,他们的区别在于衡量长度的单位是不同的。
目录
背景描述
mysql中长度函数描述
使用案例
背景描述
ASCII码
因为计算机是美国人发明和最早使用的,他们为了解决计算机处理字符串的问题,就将数字字母和一些常用的符号做成了一套编码,这个编码就是ASCII码。ASCII码包括数字大小写字母和常用符号,一共128个,1字节(byte)=8bit,8bit能表示的最大数是256,所以ASCII编码中一个字符的大小就是1个字节。
UNICODE
计算机进入中国,我们发现美国人制定的ASIIC完全不够用,于是我们就制定了自己的GB2312编码,把汉字编码了进去。同样的事情发生了在了俄罗斯,法国,日本等等,各国都开始制定自己的一套编码,计算机的编码越来越庞大,越来越乱,为了解决这一问题,Unicode应运而生。Unicode将各国文字统一编码。所以Unicode编码可以看做是ASCII的扩展。
UTF-8
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。
mysql中长度函数描述
BIT_LENGTH:Return length of argument in bits,即为返回字符串的bit位数。
LENGTH:Return the length of a string in bytes,返回字符串的byte数,同OCTET_LENGTH。
CHAR_LENGTH:Return number of characters in argument,返回字符串的字符数量,同CHARACTER_LENGTH。
使用案例
1.取字符串的bit位数
select store_id,store_name,BIT_LENGTH(store_name) from store where store_id=108;+----------+-------------+------------------------+
| store_id | store_name | BIT_LENGTH(store_name) |
+----------+-------------+------------------------+
| 108 | 108_unknown | 88 |
+----------+-------------+------------------------+
因为store_name包括11个字符,每个字符bit位数为8位,总共88位。
2.取字符串的byte数
select store_id,store_name,LENGTH(store_name) from store where store_id=101;
+----------+------------------------+--------------------+
| store_id | store_name | LENGTH(store_name) |
+----------+------------------------+--------------------+
| 101 | 红旗超市(101) | 22 |
+----------+------------------------+--------------------+
" 红旗超市(101)"字符串中包括6个中文,4个英文,总共6*3+4=22个byte
3.返回字符串的字符个数
select store_id,store_name,CHAR_LENGTH(store_name) from store where store_id in (101,108);
+----------+------------------------+-------------------------+
| store_id | store_name | CHAR_LENGTH(store_name) |
+----------+------------------------+-------------------------+
| 101 | 红旗超市(101) | 10 |
| 108 | 108_unknown | 11 |
+----------+------------------------+-------------------------+
无论中文或者英文,都取字符个数。
mysql中的BIT_LENGTH和LENGTH以及CHAR_LENGTH的区别相关推荐
- mysql中双引号和单引号有什么区别
mysql中双引号和单引号有什么区别 前2天看到有人问,mysql中双引号和单引号有什么区别? 希望大家可以关注下公众号,支持一下,鞠躬感谢~ 我就直接po代码和截图了,如下 select * fro ...
- mysql 中 RC、RR隔离级别的原理及区别
今天分享 mysql 中 RC.RR隔离级别的原理及区别: 1.首先简介mysql四种隔离级别: 1)未提交读(READ UNCOMMITED)脏读 2) 已提交读 (READ COMMITED)简称 ...
- MySQL中length()、char_length()的区别和用法
小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL专栏目录 | 点击这里 在MySQL中length(str).char_length(str)都属于判断长度的内置函数,根据其得到字符串的长 ...
- MySQL中 int(11)和int(10)有没有区别
引言 依稀还记得有次面试,有面试官问我int(10)与int(11)有什么区别,当时觉得就是长度的区别吧!面试官最后也没有给反馈,我也就以为自己答对了.直到有一次有个同学又跟我谈起这个事,才去查了以下 ...
- mysql中nchar_浅谈SQL Server、MySQL中char,varchar,nchar,nvarchar区别
1,定义: char: 固定长度,存储ANSI字符,不足的补英文半角空格. nchar: 固定长度,存储Unicode字符,不足的补英文半角空格 varchar: 可变长度,存储ANSI字 ...
- mysql中时间类型datetime,timestamp与int的区别
在mysql中存储时间,我们可以用datetime 格式,timestamp格式,也可以用int格式.那么我们设计的时候该如何考虑呢? 首先,我觉得应该明白这几个格式究竟是如何的,然后看看他们的区别, ...
- mysql中:获取字符串长度length函数和char_length函数的区别
先上结论: length函数: 计算值的长度-但1个中文会算作长度3,1个数字或者字母-算作长度1; char_length函数: 计算值的长度-但1个中文或者1个数字或者字母-都算作长度1; sql ...
- mysql中limit2,1和limit2 offset 1的区别
limit的用法 limit是限制的意思,用于限制返回的查询结果的行数 (可以通过limit指定查询多少行数据) limit 语法是 MySql的方言,,用来完成分页 语法:SELECT 字段1,字段 ...
- Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
2019独角兽企业重金招聘Python工程师标准>>> 用了这么长时间,发现自己竟然不知道utf_bin和utf_general_ci这两者到底有什么区别.. ci是 case in ...
最新文章
- MongoDB for C#基础入门
- 解压缩工具 WinRAR 5.71 + x64 Final 中文汉化版
- cmd与monkey测试
- 前端学习(2164):runtimeonly和runtimecompiler
- [你必须知道的.NET]第二十五回:认识元数据和IL(中)
- 网络爬虫中Jsoup请求url
- 优秀简历模板和面试题分享
- java8 Optional源码
- PATH变量,cp,mv,cat,more,less,head,tail命令举例
- html设置referer防盗链,referer与防盗链
- linux 文件夹 775,Linux chmod目录权限命令图文详解
- 生活中的设计模式之状态(State)模式
- python文献翻译_Python实现一键翻译英文论文,实现了pdf文档英译汉,pdf格式不变...
- 什么是APS高级计划排程系统?APS计划排产有什么功能和作用?
- 电子计算机eniac的储存能力有限 只能,电子计算机ENIAC的存储能力有限,只能存储简单的控制程序代码。...
- Angular 个人深究(一)【Angular中的Typescript 装饰器】
- CMDN Club每周精选(第4期)
- 关于Java背后的故事
- android lottie字体json,从json文件到炫酷动画-Lottie实现思路和源码分析
- 关于差旅费的账务处理