因为笔者在写代码的时候,没注意取到的数据库中的字段类型为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()方法把字符串前后两端的空格给去掉。