字符类型
在下面的表中列出常用的字符类型。
Name | Description |
---|---|
CHAR[(n)] | Fixed-length character string, blank-padded to the size specified by n. |
CLOB | Large variable-length up to 1 GB. |
LONG | Variable unlimited length. |
NVARCHAR(n) | Variable-length national character string, with limit. |
NVARCHAR2(n) | Variable-length national character string, with limit. |
STRING | Alias for VARCHAR2. |
VARCHAR(n) | Variable-length character string, with limit (considered deprecated, but supported for compatibility). |
VARCHAR2(n) | Variable-length character string, with limit. |
说明 上述表格中,其中n是一个正整数;且这些类型能够存储长度达到字符n的字符串。如果尝试存储超过字符n长度的值,将产生错误。除非超出长度的字符都是空格,这种情况下将会把字符串按照最大长度截断。
CHAR
对于类型CHAR来说,如果不指定n的值,n就会默认为1。 如果要存储的字符串长度小于n,那么类型CHAR的值将会用空格补齐,并且按照这种形式来存储并显示。
附加空格在语义上是不重要的。也就是说,当比较两个类型CHAR值的时候,对于尾部的空格是忽略不计的。而且,当把类型CHAR的值转换成另外一种字符串类型的时候将会删除这些空格。
如果您要明确地将超出长度的值转换为类型CHAR(N)的长度,那么超出长度的值将被截断到字符串N的长度,而不产生错误(如在SQL标准中指定的一样)。
VARCHAR、VARCHAR2、NVARCHAR和NVARCHAR2
如果要赋值的字符串长度小于n,那么VARCHAR、VARCHAR2、NVARCHAR和NVARCHAR2类型的字符串值将会按照实际的长度进行存储,而不用空格补齐。
说明 对于VARCHAR类型的值来说,尾部的空格在语义上是有意义的。
如果我们要明确地把超出长度的值转换为VARCHAR类型, 那么超出长度的值将被截断到字符串n指定的长度,而不产生错误(如在SQL标准中指定的一样)。
CLOB
我们可以在clob类型中存储长字符串。除了没有指定长度的限制外,CLOB在语义上等同于VARCHAR2。通常来说当字符串的最大长度不可知的时候,建议使用CLOB类型,而不是VARCHAR2类型。
说明 CLOB类型可存储字符串的最大长度大约是1GB。
注意
对于这三种类型数据的存储空间要求来说,如果字符串长度小于127个字节,那么实际存储空间的大小就是实际字符串的长度加上1个字节,如果字符串长度大于等于127个字节,那么实际存储空间的大小就是实际字符串长度加上4个字节。对于CHAR型数据来说,字符串后面附加的空格也是需要存储空间的。而系统会自动压缩长字符串,这样在磁盘上要求的实际存储空间要少一些。长字符串值是存储在后台表中,所以在快速访问短列值的时候,它们不会产生干扰。
数据库字符集决定了用来存储文本值的字符集。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论