Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : A quoi sert le N devant une chaîne de caractère ?

Question courante, pourquoi Management Studio s'obstine à mettre un N devant les chaînes de caractère quand on lui demande de générer un script ?

Pour le comprendre, essayez le script suivant :

IF OBJECT_ID('Test_Collate', 'U') IS NOT NULL
    DROP TABLE Test_Collate
GO

CREATE
TABLE Test_Collate
(
    Id int,
    ch1 varchar(50) COLLATE Latin1_General_CI_AS, -- On s'attend à des caractères latins
    ch2 varchar(50) COLLATE Greek_CI_AS, -- Ici à du grec
    ch3 varchar(50) COLLATE Cyrillic_General_CI_AS -- Et ici du russe par exemple
)
GO

-- Sans le N
INSERT Test_Collate
VALUES(1, 'Français', 'ΔΖΗΘΛπςσφ', 'ЪЫЬЮЯав')
GO

-- Avec le N
INSERT Test_Collate
VALUES(2, N'Français', N'ΔΖΗΘΛπςσφ', N'ЪЫЬЮЯав')
GO

SELECT
* FROM Test_Collate
GO

Le résultat du dernier SELECT est ici :

1

Français

???T?p?sf

???????

2

Français

ΔΖΗΘΛπςσφ

ЪЫЬЮЯав

Que faut-il en conclure ? Et bien que le moteur de base de données traite la chaîne comme étant non Unicode sans le N, et comme étant Unicode avec le N.

On voit aussi un autre comportement intéressant du moteur. Ce dernier lorsque vous insérez des caractères dans une page de code données, il remplace tous les caractères inconnus de cette page de code par « ? ». Ce n'est pas à l'affichage, c'est bien le caractère « ? » qui est stockée dans le champ.

Bon Unicode…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié jeudi 20 décembre 2007 10:23 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- EF et WPF par Matthieu MEZIL le il y a 15 heures et 49 minutes

- C# : Vérifications / Performances par Pierrick's Blog le il y a 19 heures et 24 minutes

- Du nouveau sur le clubvsts par Noham Choulant le il y a 21 heures et 4 minutes

- StyleCop SDK disponible par Michel Perfetti [Miiitch] le il y a 23 heures et 24 minutes

- Data Structures and Algorithms : un livre gratuit par Elise's blog le 08-29-2008, 11:39

- [ASP.NET] - Ajax vNext Preview 2 par Aurelien's Blog - When ClientSide meets .Net le 08-29-2008, 10:35

- TPH IS Not Null sur la relation par Matthieu MEZIL le 08-29-2008, 08:15

- Mise à jours du code Source du .NET Framework 3.5 SP1 disponible sur le Reference Source Code Center par RedoBlog - The .NET Gentleman !!! le 08-29-2008, 01:50

- ASP.net 3.5 SP1 : combiner les fichiers JavaScript grace au CompositeScript du ScriptManager (ex ScriptCombining du toolkitScriptManager) par Atteint de JavaScriptite Aiguë [Cyril Durand] le 08-28-2008, 22:39

- [Expression Web] Problème : Quand j'affiche l'Aide (F1), cela me met un message d'erreur. par Expression Web & Me le 08-28-2008, 19:44