PostgreSQL相当于SQL Server NVARCHAR(MAX)

时间:2019-06-10 06:32:15

标签: sql postgresql

我知道在PostgreSQL中,VARCHAR(n)等同于SQL Server的NVARCHAR(n),但是如何在PostgreSQL中使用类似VARCHAR(MAX)的东西,在SQL中类似于NVARCHAR(MAX)服务器?

3 个答案:

答案 0 :(得分:1)

在PostgreSQL中,char(n)varchar(n)仅受n参数限制(不确定这种限制的性质,似乎是20 Mb或10M的2字节字符或其他内容):

postgres=# select 'a'::varchar(999999999);
ERROR:  length for type varchar cannot exceed 10485760

因此,如果您确实需要MS SQL Server nvarchar(max)的等效项-可能是varchar(10485760)

但是,要使用真正不受限制的字符值,有两种方法:varcharcharacter varying,不带参数,或仅text类型。在documentation中阅读更多内容,并注意其中提供的提示:

  

这三种类型之间没有性能差异,除了使用空白填充类型时增加的存储空间,以及在存储到受长度限制的列中时需要一些额外的CPU周期来检查长度。尽管character(n)在某些其他数据库系统中具有性能优势,但在PostgreSQL中却没有这种优势。实际上,character(n)通常是这三个中最慢的,因为它需要额外的存储成本。在大多数情况下,应改用文字或字符。

答案 1 :(得分:0)

如果要创建“无界” varchar列,请使用varchar,而没有长度限制。

From the manual:

  

如果使用不带长度说明符的字符变化,则该类型可接受任何大小的字符串

因此您可以使用:

create table foo
( 
  unlimited  varchar
);

另一种替代方法是使用text

create table foo
( 
  unlimited text
);

有关字符数据类型的更多详细信息,请参见手册:
http://www.postgresql.org/docs/current/static/datatype-character.html

答案 2 :(得分:-1)

文本,varchar 可用于此要求。我使用了 varchar

字符类型描述

可变字符(n),varchar(n)---可变长度且有限制

字符(n),字符(n)-定长,空白填充

文本,varchar -可变的无限长度

更多详细信息: https://www.postgresqltutorial.com/postgresql-char-varchar-text/