首页 > 其他分享 >varchar和char区别

varchar和char区别

时间:2023-04-13 17:26:40浏览次数:34  
标签:空格 存储 varchar 字节 区别 char 长度

1、char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。

尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

再者,char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节。两者的存储数据都非unicode的字符数据。一般用 char 类型的 存放 固定的数据 如 身份证号(18) 电话号 性别 等

2、5.0以上版本,取值或设置值都会保存字符串末尾的空格,4.1之前的版本都会把字符串末尾的空格删除掉。

3、使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间

4、数据库数据类型优化:https://freexyz.cn/database/126169.html

标签:空格,存储,varchar,字节,区别,char,长度
From: https://www.cnblogs.com/dingxianfei/p/17315514.html

相关文章

  • oracle中case when 和 decode的区别
    1、decode简洁、casewhen复杂(但能实现的功能更多)2、返回值类型,casewhen的返回值类型必须一致如:SELECTCASEWHEN1=1THEN1ELSE'0'ENDFROMDUAL;--这样会报错:ORA-00932:数据类型不一致:应为NUMBER,但却获得CHAR   而decode的返回值类型需跟第一个返回值的类型一......
  • 国际海运的落箱和预提箱有什么区别 箱讯科技
    在国际海运中,海运成本除了海运费,关于“箱”的费用也占不小比例,对于,一些外贸新手来说,对于这些可能并不是很清楚。什么是“落箱费”和“预提箱费”,两者有什么区别。1、落箱费和预提箱费落箱费:货箱进港时,货柜尚未打开,收箱不得入港。船队无法将这个箱子一直放在集卡上,还有其它箱子需要......
  • HttpServeletRequest与RequestContextHolder.getRequestAttributes.getRequest的区别
    HttpServletRequest是JavaServletAPI中的一个接口,它提供了访问HTTP请求的方法,例如获取请求参数、请求头、请求体等。它是在Servlet容器中处理HTTP请求时创建的,并在Servlet的doGet()、doPost()等方法中作为参数传递。RequestContextHolder.getRequestAttributes().getRequest......
  • echarts在同一个dom元素中创建两个图表
    核心:使用grid进行分区//直角坐标系内绘图网格左右通过left和right分上下通过top和bottom分grid:[{left:'10%',right:'55%',width:'30%'},{left:'55%',right:'10%',width:'30%'},],实例效果图: 实例代码:initEch......
  • &&,&,||,|的区别
    逻辑与非(&&,||)采用短路设计用&&时第一个表达式为false,后面的则不会运算了用||时第一个表达式为true是,后面的则不会运算了单个&或者|则会将两端的都运算到运算符级别!>&&>||......
  • 微信小程序中target和currentTarget的区别
    微信小程序中target和currentTarget的区别<viewclass="outer-view"bindtap="outerHandler">​<buttontype="primary">按钮</button></view>点击内部按钮时,点击事件会通过冒泡的方式,向外扩散,触发view的tap事件,此时target指向触发事件源头,就是button,而c......
  • 在js中==与===的区别
    在js中两个=与三个=的区别在js中经常会有这种写法1=="1"实际上二者是不同的,但这种放在js中得到的结果是true,为什么会这样呢,是因为在对比之前,js将"1"转换为了number类型,所以得到的结果是true。而下面代码得到的结果为false1==="1"之所以会出现false,是因为比较之前没有转......
  • 用chartGPT自动生成的贪吃蛇游戏
    importpygameimporttimeimportrandom#初始化Pygame库pygame.init()#定义游戏窗口大小WINDOW_WIDTH=500WINDOW_HEIGHT=500#定义游戏速度SPEED=15#创建游戏窗口screen=pygame.display.set_mode((WINDOW_WIDTH,WINDOW_HEIGHT))#设置游戏标题py......
  • 投资和投机的区别是什么?
    投资和投机的区别在于以下几个方面:目的不同:投资的目的是长期稳定的收益,而投机的目的是短期高额的利润。时间不同:投资是长期的,通常持有时间超过一年,而投机是短期的,通常持有时间不超过一年。风险不同:投资的风险相对较低,因为它是基于对资产或公司的基本面分析,而投机的风险相对较高......
  • NR和FNR的区别
    awk可以使用自身变量NR和FNR来处理多个文件。NR:表示awk开始执行程序后所读取的数据行数。FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。awk处理多个文件的......