目前在我们的 SQL Server 2012 数据库中,我们正在使用varchar,我们想更改它nvarchar。我已经生成了一个脚本来做到这一点。
我的问题是 SQL Server 写入varchar列与nvarchar列的方式有什么不同吗?我们有许多我担心的后端程序。
编辑: 不确定这是否有帮助,但列上没有索引、f/k 或约束。
您需要确保为 Unicode 字符串文字加上 N 前缀。例如,如果基础数据类型是,这些将不同地工作NVARCHAR:
NVARCHAR
CREATE TABLE dbo.t(c NVARCHAR(32)); INSERT dbo.t(c) SELECT 'រៀន'; INSERT dbo.t(c) SELECT 'នរៀ'; INSERT dbo.t(c) SELECT N'រៀន'; SELECT c FROM dbo.t; SELECT c FROM dbo.t WHERE c = 'រៀន'; SELECT c FROM dbo.t WHERE c = N'រៀន';
结果:
c ---- ??? -- not stored correctly ??? -- not stored correctly រៀន -- stored correctly! c ---- ??? ??? -- probably not expected, however all Unicode characters have been changed to ? c ---- រៀន
对于那些在移动设备或老旧的浏览器上显示框字符而不是实际 Unicode 字符的用户,它看起来像这样: