吃一堑长一智:记关于oracle中char与varchar2的部分区别(掉坑)

因为笔者在写代码的时候,没注意取到的数据库中的字段类型为char(2),而数据库中的值长度为1,导致在判断字符串相等的时候出现了问题。。。。。。

为了警醒自己并且加深印象,我把这个知识点放进自己的博客,也欢迎看到我博客的大佬们提出一些建议。

1、

CHAR的长度是固定的,而且效率高,一般用于存储固定长度的数据,例如:手机号,身份证号之类的。

VARCHAR2的长度是可以变化的,长度不定,但是效率较于CHAR偏低。

2、CHAR(3)与VARCHAR(3)的区别

上文也说了,CHAR的长度是固定的,在CHAR(3)中,字段的长度为3。可如果对应的字段长度为1呢?空着的两个字段长度,会自动用空格填满

打个比方:在CHAR(3)里放有一个长度为1,值为“5”的字段,那么这个字段里所存的值就是“5  ”而不是”5“,值会被两个空格填充至长度为3!(坑死我了)

如果是VARCHAR(3),这个”3“代表的含义是字段长度最长可以到3。

同样打个比方:在VARCHAR(3)里放有一个长度为1,值为“5”的字段,那么这个字段里所存的值就是“5”,长度就是1,不会被空格填满。

所以以后一定要注意看数据库字段的类型,如果所取字段为CHAR类型且值的长度不够,在代码中取出数据记得用String自带的trim()方法把字符串前后两端的空格给去掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值