Aufgrund einer ziemlich brillanten Übersicht in meinem aktuellen Projekt, haben wir einige Guids in einer varchar-Spalte in einer Tabelle gespeichert, die mit einer uniqueidentifier-Spalte in einer anderen verglichen werden müssen.
Wie kann ich das tun? SQL Server sagt einfach, dass es nicht von einer Zeichenkette in eine uniqueidentifier umwandeln kann.
Wenn SQL beschwert, dass es nicht umwandeln kann, bedeutet das, dass Sie nicht nur den eindeutigen Namen als varchar gespeichert haben, sondern auch ein anderes Format als SQL Server (zB haben Sie '{' und '}' hinzugefügt). SQL ist in der Lage, bei richtiger Formatierung eine Zeichenfolge an uniqueidentifier zu übergeben:
%Vor%Je nachdem, wie Sie den uniqueidentifier wirklich gespeichert haben, werden Sie höchstwahrscheinlich die Daten und den Code an das SQL-Format (no {}) angepasst haben.
Ich habe gerade das folgende Testskript ausgearbeitet:
%Vor%Wird in einem SSMS-Fenster oder über die Datei slqcmd -i ausgeführt, die Ergebnisse sind die gleichen - SQL (2005) führt eine implizite Konvertierung durch. Dies unterstützt, was ich von SQL 2000 erinnere, als ich vor Jahren ein ähnliches Problem hatte.
Entscheidend ist, dass die varchar-Zeichenfolge dem guid-Muster entsprechen muss:
Sie müssen den anderen eindeutigen Identifikator auf varchar anwenden.
SQL Server versucht wahrscheinlich, Dinge wie "bob" in uniqueidentifier zu schreiben, und es schlägt fehl. Laut CAST / CONVERT ist es erlaubt, also müssen es die Werte sein die varchar-Spalte.
Tags und Links sql-server uniqueidentifier