Oracle数据库对字符串的截取 对字段存储的内容是中文还是英文有区别吗?有一个存储中文内容的字段我们数据库设置的长度是100,上游改了250,我按100截取后为啥还是报错?
250是指250个字节
100是字符
对于UTF8编码来说,它是可变长度编码,英文占1字节,中文占2-4字节
你想知道自己的字符串到底占多少字节,需要先按照UTF8转字节数组,然后看数组长度
substr函数是按字符个数截取,substrb是按字节个数截取,用后面这个就不会报错,但是可能会导致截取的最后一个汉字乱码。
要确保不乱码、不报错、而且不改字段长度,如果数据库字符集为UTF8,那么你应该按33的长度截取,即按100的三分之一来