当前位置: 首页 > news >正文

数据库-列的类型-字符串char类型

  char 和 varchar 类型

char 类型懂得都懂就是固定的字符串类型 char (maxLen) 

例如 char(5) 这个长度为5 但插入数据‘a’时 是5 插入abc 也是5 即使插满固定

就像C/C++语言里 char 字符数组一样

char str[64];

maxLen==255  哈哈最多有255个字符多了我认为你是错误 

varchar 类型顾名思义可变字符串类型 varchar (maxLen)但 长度可以达到 1-65535

实际指定的的varchar(4)

插入的字符串长度插入后字段内容
''1''(空字符)
'1'2'1'
'12'3'12'
'123'4'123'
'1234'5'1234'(不保留空字符,只存储实际字符)
'12345'6'1234'(截断超出部分,不保留空字符)

mysql> use StringCharStudy;
Database changed
mysql> create table StringCharTypes (Ch char(5),Vch varchar(5));
Query OK, 0 rows affected (0.07 sec)mysql> #插入正常数据
mysql> insert into Stringchartypes values ('12345','12345');
Query OK, 1 row affected (0.01 sec)mysql> select *from stringchartypes;
+-------+-------+
| Ch    | Vch   |
+-------+-------+
| 12345 | 12345 |
+-------+-------+
1 row in set (0.00 sec)mysql>
mysql> #插入包含空格数据 char 会截断后面的空格, varchar 不会截断后面的空格
mysql> insert into stringchartypes values('1 2  ','1 2   ');
Query OK, 1 row affected, 1 warning (0.01 sec)mysql> #由于存储方式不同 char 保留空格是从'1 2'2之后的空格当做结束符 相当于c/c++ 的字符串结束符
mysql> # varchar 保留完整 不以空格为结束符 只以输入的字符串 为准 输入多少字符接受 多少字符,当然只要超出范围那么我只能报错 因为 我指定长度能接受范围不能超过 n
mysql> # 我实际存储的是 [len=2]('1') [len=1]('') 我没有0 只有1 [len=3]('1 ') [len=4]('1 2') [len=5]('1 2 ')  [len=6]('1 2  ') 实际varchar(5) +1或者+2 才是存储+维护长度的稳定
mysql> select *from stringchartypes;
+-------+-------+
| Ch    | Vch   |
+-------+-------+
| 12345 | 12345 |
| 1 2   | 1 2   |
+-------+-------+
2 rows in set (0.00 sec)mysql> # 在数据输出加入格式 格式为:(12345) 
mysql> select concat('(',ch,')'),concat('(',vch,')') from stringchartypes;
+--------------------+---------------------+
| concat('(',ch,')') | concat('(',vch,')') |
+--------------------+---------------------+
| (12345)            | (12345)             |
| (1 2)              | (1 2  )             |
+--------------------+---------------------+
2 rows in set (0.00 sec)mysql> # 插入数据大于实际指定的长度插入失败                 
mysql>  insert into stringchartypes values('123456','123456');
ERROR 1406 (22001): Data too long for column 'Ch' at row 1
mysql>  insert into stringchartypes values('12345','123456');
ERROR 1406 (22001): Data too long for column 'Vch' at row 1
mysql> insert into stringchartypes values('1 2    ','1 2     '); # 现在有七个字符 统统截断 并且只针对于varchar 
Query OK, 1 row affected, 1 warning (0.01 sec)mysql> show warnings; 
+-------+------+------------------------------------------+
| Level | Code | Message                                  |
+-------+------+------------------------------------------+
| Note  | 1265 | Data truncated for column 'Vch' at row 1 |
+-------+------+------------------------------------------+
1 row in set (0.00 sec)mysql> select concat('(',ch,')'),concat('(',vch,')') from stringchartypes;
+--------------------+---------------------+
| concat('(',ch,')') | concat('(',vch,')') |
+--------------------+---------------------+
| (12345)            | (12345)             |
| (1 2)              | (1 2  )             |
| (1 2)              | (1 2  )             |
+--------------------+---------------------+

#char 字符串类型
create database StringCharStudy;use StringCharStudy;create table StringCharTypes (Ch char(5),Vch varchar(5));
#插入正常数据
insert into Stringchartypes values ('12345','12345');
select *from stringchartypes;#插入包含空格数据 char 会截断后面的空格, varchar 不会截断后面的空格
insert into stringchartypes values('1 2  ','1 2   ');
#由于存储方式不同 char 保留空格是从'1 2'2之后的空格当做结束符 相当于c/c++ 的字符串结束符   
# varchar 保留完整 不以空格为结束符 只以输入的字符串 为准 输入多少字符接受 多少字符,当然只要超出范围那么我只能报错 因为 我指定长度能接受范围不能超过 n 
# 我实际存储的是 [len=2]('1') [len=1]('') 我没有0 只有1 [len=3]('1 ') [len=4]('1 2') [len=5]('1 2 ')  [len=6]('1 2  ') 实际varchar(5) +1或者+2 才是存储+维护长度的稳定 
select *from stringchartypes;# 在数据输出加入格式 格式为:(12345) 
select concat('(',ch,')'),concat('(',vch,')') from stringchartypes;# 插入数据大于实际指定的长度插入失败insert into stringchartypes values('123456','123456');insert into stringchartypes values('12345','123456');# 插入数据大于实际指定的长度 若是 使用空格填充剩余的 那么会截掉
insert into stringchartypes values('1 2    ','1 2     '); # 现在有七个字符 统统截断 并且只针对于varchar select concat('(',ch,')'),concat('(',vch,')') from stringchartypes;

http://www.lryc.cn/news/279276.html

相关文章:

  • 大话 JavaScript(Speaking JavaScript):第二十一章到第二十五章
  • ICMP协议
  • 环信服务端下载消息文件---菜鸟教程
  • 创建型模式 | 建造者模式
  • MVC设计模式
  • WSL (2103) ERROR: CreateProcessEntryCommon:493: chdir 错误解决
  • 【二、自动化测试】为什么要做自动化测试?哪种项目适合做自动化?
  • 用ChatGPT来造一个ChatGPT:计算机领域智能问答系统实践(2)
  • Ubuntu开机自动挂载硬盘
  • vue3基础:单文件组件介绍
  • OCR字符识别:开始批量识别身份证信息
  • php多小区智慧物业管理系统源码带文字安装教程
  • 解决虚拟机的网络图标不见之问题
  • 【Spring类路径Bean定义信息扫描】
  • Ubuntu上安装VMware+win11系统手册
  • 2024年1月12日:清爽无糖rio留下唇齿之间的香甜
  • 群晖Synology Drive同步文件时过滤指定文件夹“dist“, “node_modules“
  • 小程序中滚动字幕
  • MySQL中约束是什么?
  • 若依在表格中如何将字典的键值转为中文
  • 用笨办法-刻意练习来提高自己的编程能力
  • FineBI报表页面大屏小屏自适应显示问题
  • NAND Separate Command Address (SCA) 接口命令解读
  • Git的简单使用说明
  • 少儿编程 2023年12月电子学会图形化编程等级考试Scratch二级真题解析(判断题)
  • 前端面试 -- vue系列
  • open3d相关操作总结
  • HTTP数据请求
  • 孩子兄弟结构体【】
  • SSM-SpringMVC+Spring+Mybatis