我知道在PostgreSQL中,VARCHAR(n)
等同于SQL Server的NVARCHAR(n)
,但是如何在PostgreSQL中使用类似VARCHAR(MAX)
的东西,在SQL中类似于NVARCHAR(MAX)
服务器?
答案 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)
但是,要使用真正不受限制的字符值,有两种方法:varchar
或character varying
,不带参数,或仅text
类型。在documentation中阅读更多内容,并注意其中提供的提示:
这三种类型之间没有性能差异,除了使用空白填充类型时增加的存储空间,以及在存储到受长度限制的列中时需要一些额外的CPU周期来检查长度。尽管character(n)在某些其他数据库系统中具有性能优势,但在PostgreSQL中却没有这种优势。实际上,character(n)通常是这三个中最慢的,因为它需要额外的存储成本。在大多数情况下,应改用文字或字符。
答案 1 :(得分:0)
如果要创建“无界” varchar
列,请使用varchar
,而没有长度限制。
如果使用不带长度说明符的字符变化,则该类型可接受任何大小的字符串
因此您可以使用:
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/