目前在我们的sql Server 2012数据库中,我们正在使用varchar,我们想要更改该nvarchar.我已经生成了一个脚本来做到这一点.
我的问题是sql Server如何写入varchar列与nvarchar列有什么不同?我们有一些我关心的后端程序.
编辑:
不确定这是否有帮助,但列没有索引,f / k或约束.
解决方法
您需要确保使用N前缀为Unicode字符串文字添加前缀.例如,如果基础数据类型是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字符的人,这就是它的样子: