2009-08-16 2 views
7

VARCHARカラムに完全に格納可能なデータが含まれていると思われるNVARCHARカラムがたくさんあります。しかし、私は列の型をVARCHARに変更して最高のものを願っています。何らかのチェックをする必要があります。nvarcharカラムのvarcharコンテンツを確認する

データは静的であり(将来変更されません)、列は索引付けされ、実際の(nvarchar)索引と比較して小さい(varchar)索引の恩恵を受けるためです。

私は単に、私はエラーまたは警告を取得することはできません

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200) 

を言うなら。 Unicodeデータは切り捨てられ/失われます。

どうすれば確認できますか?

+0

を開始するためのデータ型はnvarchar(200)であるあなたは、テスト/開発環境を持っていますか? –

+0

私は仕事で、それを使用します。しかし、ここで私は自分の使用のために小さなものを一緒に叩く必要があった。 –

+0

Googleがこのフレーズを拾うかもしれません:nvarcharにvarcharデータのみが含まれているかどうかをテストしてください – Thymine

答えて

22

どのようなデータが失われるのか、そこに戻って戻ってみませんか?

これは、列を想定しているが

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

チャームのように働いてください!ありがとう! –

1

Hmm面白いです。

SQL照会自体でこれを実行できるかどうかはわかりません。あなたはコードでそれをして幸せですか?そうであれば、すべてのレコードを取得し、文字列内のすべての文字をループしてチェックすることができます。しかし、人はそれは遅い方法です。