2009-08-07 5 views
34

Si j'ai des champs de type de données NVARCHAR (ou NTEXT) dans une base de données Microsoft SQL Server, quel serait le type de données équivalent dans une base de données PostgreSQL?Qu'est-ce que PostgreSQL est équivalent à SQL Server NVARCHAR?

+1

Veuillez ne pas supposer que tout le monde sait ce que "NVARCHAR/NTEXT" dans MS SQL. Si vous voulez obtenir de vraies informations - vous devez fournir plus d'informations - ce qu'est ce type de données. Je n'ai personnellement aucune idée de ce qu'est ce type de données, de ce qu'il peut stocker (textes, je suppose), quelles sont ses limites, et ainsi de suite. –

+0

@depesz - désolé, ce sont des chaînes de caractères Unicode. Voir http://msdn.microsoft.com/en-us/library/aa258271(SQL.80).aspx pour les définitions. – kevinw

Répondre

29

Je suis assez sûr postgres varchar est le même que Oracle/Sybase/nvarchar MSSQL même si elle est pas explicite dans le manuel:

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

fonctions de conversion d'encodage sont ici:

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

Exemple:

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

En outre, il est this response à une question similaire d'un représentant Postgresql:

Tous nos types de données texte sont multi-octets capables, à condition que vous avez installé PostgreSQL correctement.
Cela comprend: TEXTE (recommandé) VARCHAR CHAR

9

Il est varchar et texte, en supposant que votre base de données est dans le codage UNICODE. Si votre base de données est dans un encodage non-UNICODE, il n'y a pas de type de données spécial qui vous donnera une chaîne unicode - vous pouvez le stocker comme un flux bytea, mais ce ne sera pas une chaîne.

6

Le type de données TEXT standard est parfaitement adapté.

Questions connexes