admin

确定nvarchar列中的varchar内容

sql

我有一堆NVARCHAR列,我怀疑它们在VARCHAR列中包含完全可存储的数据。但是,我不能只是将列的类型更改为VARCHAR并希望达到最佳效果,所以我需要进行某种检查。

我想进行转换,因为数据是静态的(将来不会更改),并且对列进行了索引,并且与实际的(nvarchar)索引相比,它将从较小的(varchar)索引中受益。

如果我简单地说

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)

那么我不会收到错误或警告。Unicode数据将被截断/丢失。

我该如何检查?


阅读 162

收藏
2021-05-10

共1个答案

admin

为什么不将其放回那里查看丢失的数据呢?

假设column是nvarchar(200)开头

SELECT *
FROM TableName
WHERE columnName <> CAST(CAST(columnName AS varchar(200)) AS nvarchar(200))
2021-05-10