2010-12-02 23 views
4

J'ai une base de données SQL Server 2008 et un champ nvarchar(256) d'une table. Le problème fou est que quand je lance cette requête:Impossible d'insérer le caractère '≤' dans SQL Server 2008

update ruds_values_short_text 
set value = '≤ asjdklasd' 
where rud_id=12202 and field_code='detection_limit' 

puis

select * from ruds_values_short_text 
where rud_id=12202 and field_code='detection_limit' 

-je obtenir ce résultat:

12202 detection_limit = asjdklasd 11 

Vous pouvez voir que le ≤ caractère a été transformé en =

C'est un problème lié à l'encodage, c'est sûr, en fait, si j'essaie de coller '≤' dans Notepad ++ il colle '=' mais je reçois '≤' quand je convertis ANSI en UTF-8.

Donc .. Je pense que je devrais écrire la requête en UTF8 .. mais comment? Merci.

Répondre

7

Vous devez utiliser le préfixe N afin que le littéral soit traité comme Unicode plutôt que d'être traité comme des données de caractères dans la page de codes du classement par défaut de votre base de données.

update ruds_values_short_text 
set value = N'≤ asjdklasd' 
where rud_id=12202 and field_code='detection_limit' 
+0

C'était tellement simple ...! Cela fonctionne, merci. –

1

Essayez update ruds_values_short_text set value = N'≤ asjdklasd' where rud_id=12202 and field_code='detection_limit'. Le N indique que vous fournissez la langue nationale de sorte qu'il respecte l'encodage.

+1

Merci, j'ai mis à jour ma réponse même si je ne peux pas vraiment l'appeler à moi maintenant, puis-je :) –