2009-08-07 576 views
34

如果我在Microsoft SQL Server数据库中有NVARCHAR(或NTEXT)数据类型的字段,那么PostgreSQL数据库中的等效数据类型是什么?什么是PostgreSQL相当于SQL Server NVARCHAR?

+1

请不要认为每个人都知道MS SQL中的“NVARCHAR/NTEXT”。如果你想获得真实的信息 - 你必须提供更多的信息 - 这个数据类型是什么。我个人不知道这个数据类型是什么,它可以存储什么(我想是文本),它的极限是什么,等等。 – 2009-08-07 15:11:26

+0

@depesz - 对不起,它们是Unicode字符串。有关定义,请参阅http://msdn.microsoft.com/en-us/library/aa258271(SQL.80).aspx。 – kevinw 2009-08-07 15:53:05

回答

29

我敢肯定的Postgres VARCHAR是一样的甲骨文/的Sybase/MSSQL nvarchar的,即使它是不是在手册中明确:

http://www.postgresql.org/docs/7.4/static/datatype-character.html

编码转换功能如下:

http://www.postgresql.org/docs/current/static/functions-string.html http://www.postgresql.org/docs/current/static/functions-string.html#CONVERSION-NAMES

实施例:

create table 
nvctest (
utf8fld varchar(12) 
); 
insert into nvctest 
select convert('PostgreSQL' using ascii_to_utf_8); 
select * from nvctest; 

此外,还有this response从一个PostgreSQL代表一个类似的问题:

我们所有的TEXT数据类型是 多字节能力,前提是你已经 正确安装PostgreSQL的。
这包括:TEXT(推荐) VARCHAR CHAR

9

这是VARCHAR文本,假设你的数据库是Unicode编码。如果您的数据库采用非UNICODE编码,则没有特殊的数据类型可以为您提供unicode字符串 - 您可以将其存储为bytea流,但这不会是字符串。

6

标准TEXT数据类型对它来说非常好。