我有一堆我怀疑含有VARCHAR列完全可存储的数据NVARCHAR列。但是我不能随便去改变字段的类型为VARCHAR,并希望最好的,我需要做一些检查。

我想要做的转换,因为数据是静态的(它不会在未来的变化)和列索引,并会从比较实际的(NVARCHAR)指数较小(VARCHAR)索引中获益。

如果我简单说

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)

然后我就不会得到一个错误或警告。 Unicode数据将被截断/丢失。

如何检查?

有帮助吗?

解决方案

为什么不投那里,回过头来看看哪些数据丢失?

此假定列数据类型为nvarchar(200)开始与

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

其他提示

嗯有趣。

我不知道,你可以在一个SQL查询本身做到这一点。你高兴做的代码?如果是这样,你可以得到所有的记录,然后遍历字符串,并检查所有的字符。但人这是一个缓慢的方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top