sql语句疑惑-char

sql语句疑惑-char

创建表格时设置了tel的char为11,插入数据char(11)未起到定长作用


运行如下:

CREATE TABLE student(

id int unsigned PRIMARY key,

name varchar(20) not null,

sex char(1),

birthday date not null,

tel char(11) not null,

remark varchar(200)

)

> OK

> 时间: 0.786s


insert into student values(1, "mingming", "男", "2022/2/18", "123456", null)

> Affected rows: 1

> 时间: 0.239s

https://img1.sycdn.imooc.com//climg/620f0c7c098a659904240089.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕凡 2022-02-18 11:26:01

同学,你好!起到作用的

1、CHAR(M) 定义了一个固定长度的字符串列,包含的字符个数最大为 M,不能超过;

2、当字符个数不够M时,会在右侧填充空格以达到指定的长度,但在检索到 CHAR 值时,尾部的空格将被删除。

祝学习愉快~


  • 按照老师说的两点,char就失去定长功能了呀,与varchar没有了区别。而我想要的就是把tel的长度定为11,多一个或少一个都不行,请问该如何实现呢?

    2022-02-18 11:47:02
  • 同学,你好!

    一、CHAR(M)在字符个数不够M时,会在右侧填充空格以达到指定的长度;

    char和varchar的区别:

    CHAR的长度是不可变的,而VARCHAR的长度是可变的,也就是说,定义一个CHAR(10)和VARCHAR(10),如果存进去的是‘ABCD’, 那么CHAR所占的长度依然为10,除了字符‘ABCD’外,后面跟六个空格,而VARCHAR的长度变为4了,取数据的时候,CHAR会去掉多余的空格,而VARCHAR类型是不需要的

    二、要把tel长度规定为11,可以在代码层次实现,判断tel长度是否为11,满足才可以存储;

    祝学习愉快~

    2022-02-18 11:54:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师