Warum wird ein Bindestrich zur Frage? Oder Probleme beim Codieren von Daten in SQL

Ein Kunde hat mich kontaktiert, zu dem ich vor sechs Monaten Daten aus Excel in die Produktliste Anwendungen des Kunden hochgeladen habe. Video zum Ergebnis.
Die Datei wurde in China erstellt, wo das übliche kyrillische Alphabet nicht verwendet wird.

Ein Artikel mit dem Namen "ABM3C - 25 - D - Y - T» T "wird geladen.

Nach dem Herunterladen erhalten wir "ABM3C? 25? D4Y? T.". Nach ProFiler habe ich die Schreibprozedur abgefangen:

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

Das heißt, der Austausch erfolgt bereits in SQL selbst. Die Datenbank wurde auf der Client Communicator-Plattform erstellt. Aus Gewohnheit habe ich die Sortieroptionen für die Datenbank selbst überprüft. Alles ist in Ordnung - Cyrillic_General_CI_AS, wie während der Installation empfohlen.

Spielte mit Besetzung und Konvertierung - stellt Fragen anstelle von Bindestrichen. Ich konnte das Problem nicht selbst lösen ... Ich habe mich mit diesem Problem an den technischen Support des Client Communicator-Plattformentwicklers gewandt.

Die Antwort des Entwicklers war zunächst sehr überraschend: "Sie müssen den Datentyp Nvarchar verwenden, und Sie verwenden wahrscheinlich Varchar." Die Aufzeichnung erfolgt in einem Feld mit dem Datentyp nvarchar (standardmäßig beim Erstellen eines Felds im Konfigurator festgelegt).

Ich zeige, dass das einfachste Skript mir alle die gleichen unglücklichen Fragezeichen gibt.
wählen Sie 'ABM3C - 25 D D4Y - T', gegossen ( 'ABM3C 25 25 D D4Y T T' als nvarchar) Ich

bekam Beratung - setzen N. vor dem ersten Apostroph,

wählen Sie N'ABM3C - 25 - D4Y - T '

gab mir das gewünschte Ergebnis . Durch Hinzufügen von N haben wir SQL darauf hingewiesen, dass wir diese Zeichenfolge als Wert in Unicode verarbeiten müssen.

Der Prozeduraufruf wurde durch Hinzufügen von N:

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

Ich wusste immer, dass ich den Buchstaben N vor das Anführungszeichen setzen musste, aber ich habe ihm keine besondere Bedeutung beigemessen, bis ich auf dieses Problem gestoßen bin.

All Articles