2009-08-16 7 views
7

Mam kilka kolumn NVARCHAR, które, jak podejrzewam, zawierają doskonale przechowywane dane w kolumnach VARCHAR. Jednak nie mogę po prostu przejść i zmienić typu kolumn na VARCHAR i mam nadzieję na najlepsze, muszę zrobić jakiś czek.Określanie zawartości varchar w kolumnach nvarchar

Chcę wykonać konwersję, ponieważ dane są statyczne (nie zmienią się w przyszłości), a kolumny są indeksowane i będą korzystały z mniejszego (varchar) indeksu w porównaniu do faktycznego (nvarchar) indeksu.

Gdybym po prostu powiedzieć

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200) 

wtedy nie będę się błąd lub ostrzeżenie. Dane Unicode zostaną obcięte/utracone.

Jak sprawdzić?

+0

masz środowisku testowym/rozwój? –

+0

W pracy robię i używam. Ale tutaj musiałem zrzucić coś małego na własny użytek, tylko raz. –

+0

Nadzieję, że Google może wykryć to zdanie: Sprawdź, czy nvarchar zawiera tylko dane varcharne – Thymine

Odpowiedz

22

Dlaczego nie rzucić tam iz powrotem, aby zobaczyć, jakie dane zostaną utracone?

Zakłada kolumna jest nvarchar (200), aby rozpocząć z

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

Działa jak urok! Dzięki! –

1

Hmm interesujące.

Nie jestem pewien, czy możesz to zrobić w samym zapytaniu SQL. Czy chcesz to zrobić w kodzie? Jeśli tak, możesz uzyskać wszystkie rekordy, a następnie zapętlić wszystkie znaki w łańcuchu i sprawdzić. Ale mężczyzna to powolna droga.

Powiązane problemy