22.1 问题描述 22.2 解决方案 中文,尤其是中文,一个字符占用多少字节是不同的。 比如我创建了一个table表(a(4),b(4))就错了! 最多可插入1个汉字加1个字母(或数字)。 错误的! b 列最多可插入 4 个汉字。 b列中的一个汉字或其他字符(如数字或字母或英文标点符号)占用2个字节。 可以看到,在以N开头的字段类型(如NCHAR,)中,任何字符(包括汉字)都占用2个字节,是统一的。 不以N开头的字段类型(如CHAR,)中,字符(如汉字)占用3个字节,其他字符占用1个字节。 函数获取占用的字符数,或者vsize函数获取占用的字节数。 你认为字符串“中华12”占用多少个字符和字节? 看sql返回值就清楚了。 ('China 12') from Dual--返回 4,占用 4 个字符 ('China 12') from Dual--返回 8,占用 8 个字节,其中每个中文子占用 3 个字节。 而12个字符各占一个字节(N'中华1') from dud--返回6。这是将字符串转为字符串后,每个字符占2个字节,3等于6个字符(N'中华1') from Dual--返回 3,因为只有 3 个字符。 字符串类型字段的默认长度以字节为单位,取决于参数的值(可以通过使用查看该参数的值)。 默认为BYTE,以字节为单位。 如果是CHAR,则为In字符。 表格中的列可以以字符为单位吗? 当然你可以,例如,这样创建: (a (4 char)) 这样,a 列最多可以存储 4 个字符,而不是 4 个字节。