证明char是定长的?

news2024/10/5 22:25:05

证明char是定长的?

大部分博客都在讲解char和varchar区别的时候都谈到char为定长,varchar为变长。

但是怎么证明char为定长呢?

下面是我证明的过程。

  1. 创建CHAR列:首先,创建一个CHAR列,指定其长度。例如:

    CREATE TABLE char_test (
        id INT,
        name CHAR(10)
    );
    

    在上面的示例中,name列被定义为CHAR(10),表示它将始终占用10个字符的空间。

  2. 插入不同长度的数据:接下来,插入不同长度的数据,并检查存储占用的空间。例如:

    INSERT INTO char_test (id, name) VALUES (1, 'John');
    INSERT INTO char_test (id, name) VALUES (2, 'Alice');
    
  3. 查看存储空间:使用以下SQL语句来查看存储空间的使用情况:

    SELECT id, name, LENGTH(name) AS actual_length FROM char_test;
    

    上述查询将返回:

    +----+----------+---------------+
    | id | name     | actual_length |
    +----+----------+---------------+
    | 1  | John     | 4            |
    | 2  | Alice    | 5            |
    +----+----------+---------------+
    

证明翻车!!!

为什么呢?为什么查询出来的长度不是10呢?

有点出乎笔者的意料。

这个时候我想到的是chatgpt。

在这里插入图片描述

我差点就相信它了!!但是我问它出处的时候?它又“人工智障”了。

在这里插入图片描述

这个时候我想到了MySQL官网找寻答案。

下面链接有详细char的介绍。

MySQL :: MySQL 8.0 Reference Manual :: 11.3.2 The CHAR and VARCHAR Types

在这里插入图片描述

重点来了。。。

当char的值在检索(查询)的时候,右边的填充空格被移除了

那怎么办呢?后面不是给了一个SQL mode吗?修改SQL mode干一把。

mysql> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)

设置PAD_CHAR_TO_FULL_LENGTH模式。

mysql> SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
Query OK, 0 rows affected, 1 warning (0.00 sec)

在查询char类型字段的长度。

mysql> SELECT id, name, CHAR_LENGTH(name) AS character_length, LENGTH(name) AS byte_length FROM char_test;
+------+------------+------------------+-------------+
| id   | name       | character_length | byte_length |
+------+------------+------------------+-------------+
|    1 | John       |               10 |          10 |
|    2 | Alice      |               10 |          10 |
+------+------------+------------------+-------------+
2 rows in set (0.00 sec)

至此,终于是把char为定长证明出来了。

最后得出结论:
CHAR确实是定长的。
CHAR 在存储时会在右边填充空格以达到指定的长度,检索(查询)时会去掉空格。在PAD_CHAR_TO_FULL_LENGTH模式下会显示出空格。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1168255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决ECharts柱形图自定义单个柱子颜色图例无法显示

legend里data和series里的name需要对应series里对象需要设置stack属性,属性值都一样即可显示单柱重点在于series里对象data属性设置,必须使用,否则影响柱体上数值显示tooltip的值需要自定义,否则会显示堆叠柱状图的tooltip格式&am…

动手学深度学习——稠密连接网络DenseNet(原理解释+代码详解)

稠密连接网络DenseNet 1. 从ResNet到DenseNet2. 稠密块体3. 过渡层4. DenseNet模型5. 训练模型 CIFAR 和 SVHN 数据集上的错误率 (%)。DenseNet 比 ResNet 使用更少的参数,同时实现了更低的错误率。在没有数据增强的情况下,DenseNet 的性能大幅提高。 …

MySQL数据库之表的增删查改

目录 表的操作1.创建表创建表案例 2.查看表结构3.修改表4.删除表 表的操作 1.创建表 语法: CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明: field 表示列…

pinia简单使用

新命令-创建vue3项目 vue create 方式使用脚手架创建项目,vue cli处理, vue3后新的脚手架工具create-vue 使用npm init vuelatest 命令创建即可。 在pinia中,将使用的组合式函数识别为状态管理内容 自动将ref 识别为stste,computed 相当于 ge…

Anaconda安装与配置

1.打开Anaconda官网,选择对应版本,下载到对应目录即可 或者进入: Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 2.双击打开.exe文件,然后点击next ; 3.点击agree 4.点击just me,然后next; 5.在Choose Install L…

百科创建系列天花板!一文看懂百度百科如何创建,百度百科怎么编辑才能通过!(百科创建必看)

在互联网时代,拥有一个权威的个人或企业信息展示平台显得尤为重要。百度百科作为全球最大的中文百科全书,已经成为了许多人和企业展示自己的重要途径。那么,如何创建一个百度百科词条呢? 分媒互动将为大家详细介绍百度百科创建的…

Locust:可能是一款最被低估的压测工具

01、Locust介绍 开源性能测试工具https://www.locust.io/,基于Python的性能压测工具,使用Python代码来定义用户行为,模拟百万计的并发用户访问。每个测试用户的行为由您定义,并且通过Web UI实时监控聚集过程。 压力发生器作为性…

第三章 python数据类型

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…

Git https方式拉的代码IDEA推送代码报错

报错信息 fatal: could not read Username for ‘https://codehub-cn-south-1.devcloud.huaweicloud.com’: No such file or directory 18:18:39.885: [recovery_pattern] git -c credential.helper -c core.quotepathfalse -c log.showSignaturefalse push --progress --porc…

python第一课 变量

1.离线的情况下首选txt文档 2.有道云笔记 3.思维导图 xmind mindmaster 4.博客 5.wps流程图 # 变量的命名规则 1.变量名只能由数字字母下划线组成 2.变量名不能以数字开头 3.变量名不能与关键字重名 快捷键 撤销:Ctrl/Command Z 新建:Ctrl/Com…

【CesiumJS】(1)Hello world

介绍 Cesium 起源于2011年,初衷是航空软件公司(Analytical Graphics, Inc.)的一个团队要制作世界上最准确、性能最高且具有时间动态性的虚拟地球。取名"Cesium"是因为元素铯Cesium让原子钟非常准确(1967年,人们依据铯原子的振动而对…

气膜场馆的降噪方法

在现代社会,噪音已经成为我们生活中难以避免的问题,而气膜场馆也不例外。传统的气膜场馆常常因其特殊结构而面临噪音扩散和回声问题,影响了人们的体验和活动效果。然而,随着科技的进步,多功能声学综合馆应运而生&#…

413 (Payload Too Large) 2023最新版解决方法

文章目录 出现问题解决方法 出现问题 博主在用vue脚手架开发的时候,在上传文件的接口中碰到 这样一个错误,查遍所有csdn,都没有找到解决方法,通过一些方式,终于解决了。 解决方法 1.打开Vue项目的根目录。 2.在根目…

what?腾讯云3年轻量2核4G5M服务器566.6元哪去了?

what?腾讯云3年轻量2核4G5M服务器566.6元哪去了?腾讯云双11优惠活动3年轻量2核4G5M服务器从566.6元涨价到756元三年,3年轻量2核2G4M服务器从366.6元恢复到540元三年,大家抓紧吧,三年轻量已经库存已经不多了&#xff0c…

EthernetIP主站转EtherCAT协议网关采集电力变压器的 Ethernet IP 数据

怎么通过捷米JM-EIPM-ECT网关把ABB电力变压器的 Ethernet IP 数据,连接到欧姆龙PLC上,通过plc去监控电力设备的数据呢,下面是介绍简单的连接方法,采集Ethernet IP从站数据和EtherCAT协议 1 ,捷米JM-EIPM-ECT网关连接Et…

基于51单片机电子秤-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器,液晶1602显示,HX711模块,按键设置单价,计算总价,超量程报警,蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 I…

基于openresty waf二次开发多次匹配到的ip再做拉黑

我们想在openresty waf的基础上做二次开发,比如再精确一些。比如我们先匹配到了select的url我们先打分10分,匹配到cc 1000/s我们再给这个ip打10分…直到100分我们就拉黑这个ip。 [openresty waf][1] #cat reids_w.lua require lib local redis require…

Zookeeper安装及配置

Zookeeper官网:Apache ZooKeeper 一般作为服务注册中心 无论在Windows下还是Linux下,Zookeeper的安装步骤是一样的,用的包也是同一个包 Window下安装及配置Zookeeper 下载后解压 linux安装 window及Linux安装及配置zookeeper_访问windos上的zookeeper-CSDN博客

用Python写了13个小游戏,上班摸鱼我能玩一天

分享13个Python小游戏,本内容来源于网络。 用Python写个魂斗罗,另附30个Python小游戏源码​segmentfault.com/a/1190000041782623 1、吃金币 源码分享: import os import cfg import sys import pygame import random from modules import …

【框架篇】统一用户登录权限验证

✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! 统一用户登录权限验证 1,自定义拦截器 对于统一用户登录权限验证的问题&#xff0c…