PostgreSQL相当于SQL Server NVARCHAR(最大值)

PostgreSQL相当于SQL Server NVARCHAR(最大值),sql,postgresql,Sql,Postgresql,我知道在PostgreSQL中,VARCHAR(n)相当于SQL Server的NVARCHAR(n),但是我如何在PostgreSQL中使用类似于VARCHAR(MAX)的东西,类似于SQL Server中的NVARCHAR(MAX)的东西,用于char(n)和VARCHAR(n)它只是受到n参数的限制(不确定这种限制的性质,似乎是20 Mb或10 M的2字节字符或其他): 因此,如果您确实需要MS SQL Server的等效版本nvarchar(max),那么它可以是varchar(1048

我知道在PostgreSQL中,
VARCHAR(n)
相当于SQL Server的
NVARCHAR(n)
,但是我如何在PostgreSQL中使用类似于
VARCHAR(MAX)
的东西,类似于SQL Server中的
NVARCHAR(MAX)
的东西,用于
char(n)
VARCHAR(n)
它只是受到
n
参数的限制(不确定这种限制的性质,似乎是20 Mb或10 M的2字节字符或其他):

因此,如果您确实需要MS SQL Server的等效版本
nvarchar(max)
,那么它可以是
varchar(10485760)

但是,要使用真正不受限制的字符值,有两种方法:
varchar
character variable
不带参数或只
text
类型。请阅读中的详细信息,并注意其中提供的提示:

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

如果您想创建一个“无界”的
varchar
列,只需使用
varchar
而不受长度限制

如果在不使用长度说明符的情况下使用字符变量,则该类型接受任何大小的字符串

因此,您可以使用:

create table foo
( 
  unlimited  varchar
);
另一种选择是使用
文本

create table foo
( 
  unlimited text
);
有关字符数据类型的更多详细信息,请参阅手册:

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

字符类型说明

字符可变(n),varchar(n)--带限制的可变长度

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


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

更多详情:

text
:@Abelisto请回答这个问题,以便我能接受。这个问题太短了,回答不了。请仔细阅读PostgreSQL文档-在我看来,这真是一个不错的阅读:)@Abelisto True,但我希望您能在这里提供答案,以便将来对其他人有所帮助。它是SQL Server中的
NVARCHAR
-而不是
NVCHAR
-已更正
create table foo
( 
  unlimited text
);