有关VarCharVarChar2数据类型的说明
Oracle 提供了两种变长字符串数据类型,一为 VarChar 一为 VarChar2,它们的区别在于:VarChar 每个字符所占的字节数并不一致,全角字符占两个字节,半角字符占一个字节;VarChar2 则类似于 Unicode 编码形式,不管是全角字符还是半角字符,都会占用两个字节。
在大多数情况下,推荐使用 VarChar2 数据类型,因其兼容性比较好,而且不存在长度计算方面的问题。
但是在定义VarChar2的时候需要注意,我们通常的定义方式是采用类似于“aa VarChar220)”这种写法,按照我们的思路来说:这是一个字符型的字段,能容纳二十个字符。但是实际测试一下,发现它只能容纳十个字符,这是因为 VarChar2 数据类型的每个字符占用两个字节,而上面的定义语句定义的是字节数而非字符数!上面的语句正确的理解应该是:“一个字符型的字段 aa ,其容量是20个字节”。
如果想要定义实际的字符数,可以这样写:“unicode文件格式aa VarChar220 char)”,这种写法才是定义真正的20个字符。
使用 SubStr 等字符串函数的时候也应注意这个问题,原因在于 SubStr 之类的函数也是按“字符”来操作的,所以可能导致字段超限的情况发生,如果遇到类似前面的语句定义的那种形式,则 SubStr 一类的函数的长度参数应该除以2才能确保不出问题。
建立数据库时应明确使用字符数而非字节数来定义 VarChar2 数据类型,这将是个好习惯。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。