我有一堆NVARCHAR列,我怀疑它们在VARCHAR列中包含完全可存储的数据。但是,我不能只是将列的类型更改为VARCHAR并希望达到最佳效果,所以我需要进行某种检查。
我想进行转换,因为数据是静态的(将来不会更改),并且对列进行了索引,并且与实际的(nvarchar)索引相比,它将从较小的(varchar)索引中受益。
如果我简单地说
ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)
那么我不会收到错误或警告。Unicode数据将被截断/丢失。
我该如何检查?
为什么不将其放回那里查看丢失的数据呢?
假设column是nvarchar(200)开头
SELECT * FROM TableName WHERE columnName <> CAST(CAST(columnName AS varchar(200)) AS nvarchar(200))