Pourquoi un tiret devient-il une question? Ou des problèmes avec le codage des données en SQL

Un client m'a contacté, à qui il y a six mois j'ai téléchargé des données d'Excel vers la liste des produits Applications du client. Vidéo sur le résultat.
Le fichier a été formé en Chine, où l'alphabet cyrillique habituel n'est pas utilisé.

Un élément nommé «ABM3C - 25 - D - Y - T» T »est chargé.

Après le téléchargement, nous obtenons «ABM3C? 25? D4Y? T.» Après ProFiler, j'ai intercepté la procédure d'écriture:

exec 3, «ABM3C-25-D4Y-T»

Autrement dit, le remplacement est déjà fait sur SQL lui-même. La base de données a été créée sur la plateforme Client Communicator. Par habitude, j'ai vérifié les options de tri pour la base de données elle-même, tout va bien - Cyrillic_General_CI_AS, comme recommandé lors de l'installation.

Joué avec cast et convert - émet des questions au lieu de tirets. Je n'ai pas pu résoudre le problème moi-même ... J'ai contacté le service d'assistance technique des développeurs de la plateforme Client Communicator avec ce problème.

La réponse du développeur a d'abord été très surprenante: "Vous devez utiliser le type de données Nvarchar, et vous utilisez probablement Varchar." L'enregistrement est effectué dans un champ avec le type de données nvarchar (défini par défaut lors de la création d'un champ dans le configurateur).

Je montre que le script le plus simple me donne tous les mêmes points d'interrogation malheureux.
sélectionnez 'ABM3C 25 25 D D4Y T T', cast ('ABM3C 25 25 D D4Y T T' comme nvarchar) J'ai

reçu un conseil - mettez N. avant la première citation,

sélectionnez N'ABM3C 25 25 D D4Y T T '

m'a donné le résultat souhaité . En ajoutant N, nous avons souligné SQL que nous devons traiter cette chaîne comme une valeur en Unicode.

Correction de l'appel de procédure en ajoutant N:

exec 3, N'ABM3C - 25 - D4Y - T '

J'ai toujours su que je devais mettre la lettre N devant le guillemet, mais je n'y attachais aucune importance particulière jusqu'à ce que je tombe sur ce problème.

All Articles