2009-08-05 5 views
2

Nous avons hérité d'une application qui n'a pas été conçue à l'origine pour consommer des données localisées (chaînes localisées comme russe/japonais, formats datetime localisés, etc.).Contourner la nécessité d'ajouter le préfixe N dans les littéraux de chaîne

Les développeurs d'origine qui ont travaillé sur le projet n'ont pas anticipé qu'il y aura des chaînes Unicode. Bien en charge les caractères unicode les types de données de la table (NVARCHAR, etc.), certaines de leurs requêtes ne sont pas correctement préfixé avec N.

Par exemple:

select * from table where searchString like '%<search string here>%' 

Pour faire ce travail avec des chaînes Unicode:

select * from table where searchString like N'%<search string here>%' 

Nous avons alors décidé que nous devions simplement préfixer manuellement tous les littéraux de chaîne avec N, mais nous avons alors découvert, à notre grande horreur, l'énorme quantité de requêtes PARTOUT. Donc, ma question est, est-il un moyen de ne pas mettre le préfixe N dans nos requêtes, mais cela fonctionnerait encore? Comme dire SQL Server "Hey, s'il vous plaît traiter toutes les chaînes Unicode. S'il vous plaît ne me faites pas vous dire à chaque fois. :)"

Cordialement, Ian

Répondre

1

Dans SQL Server 2000 et 2005, pour autant que je Suis conscient, non. Je ne peux pas dire à propos de 2008, mais soupçonne la même chose.

1

Vous ne pouvez pas. C'est nécessaire pour la compatibilité avec les pilotes ODBC/OLE (donc ils ne vont pas essayer de faire une conversion de page de code).

Questions connexes