一、参数解释
LENGTH_IN_CHAR是初始化数据库时一个参数,数据库创建后不能修改,需要建库的时候考虑好
此参数决定了,数据库中的VARCHAR类型对象的长度是否以字符为单位。
取值为1或者Y则设置为以字符为单位,将存储长度值按照理论字符长度进行放大。
取值为0或者N则所有 VARCHAR 类型对象的长度以字节为单位
不管如何定义,实际能插入的字符串占用总字节长度仍然不能超过 8188的上限
CHARSET 字符集选项。 取值:0代表GB18030,1代表UTF-8,2代表韩文字符集 EUC-KR。默认为 0。
二、四种场景
1.CHARSET=0,LENGTH_IN_CHAR=0
这是初始化数据库时的默认配置,字符集为gb18030,varchar长度以字节为单位,汉字一般需要占用两个字节
2.CHARSET=1,LENGTH_IN_CHAR=0
字符集为UTF-8,varchar长度以字节为单位,汉字一般占据三个字节
3.CHARSET=0,LENGTH_IN_CHAR=1
字符集为GB18030,在length_in_char=1的情况下,varchar按字符来计数,varchar的实际可存储字节数会按2倍的比例放大
例如定义varchar(10),那么就可以存储10 * 2 = 20个字节的数据
4.CHARSET=1,LENGTH_IN_CHAR=1
字符集为UTF-8,varchar长度以字符为单位,varchar的实际存储字节数会按4倍的比例放大
例如定义varchar(10),那么就可以存储10 * 4 = 40个字节的数据