本文介绍了PolarDB PostgreSQL版(兼容Oracle)支持的常用字符类型。
下表列出常用的字符类型。
名称 | 描述 |
---|---|
CHAR[(n)] | 固定长度的字符串,如果长度不足n,用空格填充至长度为n。 |
CLOB | 大型可变长度字符串,最大为1 GB。 |
LONG | 可变长度字符串,长度无限制。 |
NVARCHAR(n) | 可变长度的字符串,长度有限制。 |
NVARCHAR2(n) | 可变长度的字符串,长度有限制。 |
STRING | VARCHAR2的别名。 |
VARCHAR(n) | 可变长度字符串,长度有限制(不推荐使用,但出于兼容性考虑,支持该类型)。 |
VARCHAR2(n) | 可变长度字符串,长度有限制。 |
TEXT | 长字符串,最大长度为1 GB。 |
说明 上述表格中,其中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。
TEXT
可以在TEXT类型中存储长字符串。TEXT和CLOB类型类似,没有长度限制。可用于存储最大长度不可知的字符串。
说明 TEXT类型可存储字符串的最大长度大约是1GB。
注意
对于以上几种类型数据的存储空间要求来说,如果字符串长度小于127个字节,那么实际存储空间的大小就是实际字符串的长度加上1个字节,如果字符串长度大于等于127个字节,那么实际存储空间的大小就是实际字符串长度加上4个字节。对于CHAR型数据来说,字符串后面附加的空格也是需要存储空间的。而系统会自动压缩长字符串,这样在磁盘上要求的实际存储空间要少一些。长字符串值是存储在后台表中,所以在快速访问短列值的时候,它们不会产生干扰。
数据库字符集决定了用来存储文本值的字符集。