2009-08-16 9 views
7

Ich habe eine Reihe von NVARCHAR-Spalten, von denen ich vermute, dass sie perfekt speicherbare Daten in VARCHAR-Spalten enthalten. Ich kann jedoch nicht einfach den Typ der Spalten in VARCHAR ändern und hoffe auf das Beste, ich muss eine Art Überprüfung durchführen.Ermitteln des varchar-Inhalts in nvarchar-Spalten

Ich möchte die Konvertierung durchführen, da die Daten statisch sind (dies wird sich in Zukunft nicht ändern) und die Spalten werden indiziert und würden von einem kleineren (varchar) Index im Vergleich zum tatsächlichen (nvarchar) Index profitieren.

Wenn ich einfach sagen

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200) 

dann werde ich nicht einen Fehler oder eine Warnung aus. Unicode-Daten werden abgeschnitten/verloren.

Wie überprüfe ich?

+0

Sie haben Test-/Entwicklungsumgebung zu beginnen? –

+0

Bei der Arbeit mache ich, und benutze es. Aber hier musste ich etwas klein zusammen für meinen eigenen Gebrauch schlagen, nur einmal verwenden. –

+0

In der Hoffnung, dass Google diesen Ausdruck aufgreifen könnte: Test, wenn nvarchar nur varchar Daten enthält – Thymine

Antwort

22

Warum nicht dort hin und zurück werfen, um zu sehen, welche Daten verloren gehen?

Diese Spalte wird davon ausgegangen ist nvarchar (200) mit

SELECT * 
FROM TableName 
WHERE columnName <> CAST(CAST(columnName AS varchar(200)) AS nvarchar(200)) 
+0

Arbeitete wie ein Charme! Vielen Dank! –

1

Hmm interessant.

Ich bin nicht sicher, dass Sie dies in einer SQL-Abfrage selbst tun können. Bist du glücklich, es in Code zu tun? Wenn dies der Fall ist, können Sie alle Datensätze abrufen und dann alle Zeichen in der Zeichenfolge durchlaufen und überprüfen. Aber Mann, es ist ein langsamer Weg.