这个问题的背景是我有一个具有以下定义的专栏:
FirstName VARCHAR(100).
如果我将列数据类型更改为NVARCHAR,并且插入值时我可以插入一个THAI /中文/欧洲值,我需要用N前缀它,如
Insert into table ([FirstName]) value(N'THAI/Chinese/European value').
问题:
有很多应用程序更新了这个特定的列,为了帮助我进行这项更改,我需要对程序和各种其他应用程序级别的更改进行大量更改。有没有办法可以在数据库级别进行更改,以便我可以适应这种变化。
答案 0 :(得分:1)
有没有办法可以在数据库级别进行更改,以便我可以适应这种变化。
我不相信有任何方法可以强制SQL Server将所有varchars作为unicode nvarchars处理。它们只是不同的数据类型。
如果在SQL代码中使用文字,则必须使用N''
。保存数据的任何列,参数或变量都必须是nchar / nvarchar。您的应用程序都必须将unicode值发送到数据库。
我会搜索" sql server迁移到unicode"在你开始之前进行额外的阅读。
答案 1 :(得分:1)
虽然我同意@TimLehner我不知道强制SQL Server将所有varchar
列作为nvarchar
列处理的方法,但有一些事情可以使成为你的更容易转换到列中的Unicode字符串:
ALTER TABLE [table] ALTER COLUMN FirstName nvarchar(100)
。 (当然,如果适用,请务必更新[table]
的创建脚本 - 例如CREATE TABLE [table] (FirstName nvarchar(100)...)
。)N'SomeFirstName'
)文字,希望插入或设置带有Unicode字符的字符串; 但继续使用非Unicode(即'SomeFirstName'
)字面值,而在转换中。varchar
到nvarchar
)。基本上,理想情况下您可以更改列及其相关内容,以便立即支持Unicode;但您可以将初始更改限制为最初需要利用该列的基础Unicode支持的应用程序,过程等。
答案 2 :(得分:0)
您可以使用存储过程进行插入和更新。如果整个应用程序使用它,您只能更新存储过程...
但我想这仍然需要对所有地点进行更新,所以我想这不是那么多帮助......