英文版的SQL Server中直接在SQL语句中插入中文最终会显示??
文章目录
单次解决方案
把类似于
insert into example values ('您好')
这样的SQL语句全部改写成
insert into example values (N'您好')
N表示Unicode,上面的语法仅为示例,具体怎么写看自己习惯。
还有,如果数据库的字段类型不是nchar或者nvarchar的话貌似也是不能插中文,请注意。
永久解决方案
本人将【排序规则】改为简体中文后问题没得到解决,将【默认语言】改为简体中文后问题得到解决,有可能是两个均改才可以,也有可能是只将【默认语言】修改就可以,我懒得去调试了,请读者自选。
修改数据库的排序规则
-
将数据库修改为单用户模式,注意修改代码中【数据库名】片段
SQL ALTER DATABASE <你的数据库名> SET SINGLE_USER WITH ROLLBACK IMMEDIATE
-
关闭所有的查询窗口,修改排序规则为
Chinese_PRC_90_CI_AS
,其他类似的很多也是中文,但在细节上有所不同,详情查看SQL Server 排序规则名称 (Transact-SQL) -
修改为多用户模式
SQL ALTER DATABASE <你的数据库名> SET MULTI_USER
参考:The database could not be exclusively locked to perform the operation(SQL Server 5030错误解决办法)
更改SQL Server的默认语言
查看SQL Server和数据库的默认语言
SQL Server在属性—高级里
数据库在属性—选项里
使用SELECT @@language
可查询到当前默认语言
使用Transact-SQL配置默认语言选项
在新建查询中输入以下内容,然后单击执行
USE <你的数据库名> ;
GO
EXEC sp_configure 'default language', 30;
GO
RECONFIGURE;
GO
数字与语言参照表
╔════════╦═════════════════════╗
║ LANGID ║ ALIAS ║
╠════════╬═════════════════════╣
║ 0 ║ English ║
║ 1 ║ German ║
║ 2 ║ French ║
║ 3 ║ Japanese ║
║ 4 ║ Danish ║
║ 5 ║ Spanish ║
║ 6 ║ Italian ║
║ 7 ║ Dutch ║
║ 8 ║ Norwegian ║
║ 9 ║ Portuguese ║
║ 10 ║ Finnish ║
║ 11 ║ Swedish ║
║ 12 ║ Czech ║
║ 13 ║ Hungarian ║
║ 14 ║ Polish ║
║ 15 ║ Romanian ║
║ 16 ║ Croatian ║
║ 17 ║ Slovak ║
║ 18 ║ Slovenian ║
║ 19 ║ Greek ║
║ 20 ║ Bulgarian ║
║ 21 ║ Russian ║
║ 22 ║ Turkish ║
║ 23 ║ British English ║
║ 24 ║ Estonian ║
║ 25 ║ Latvian ║
║ 26 ║ Lithuanian ║
║ 27 ║ Brazilian ║
║ 28 ║ Traditional Chinese ║
║ 29 ║ Korean ║
║ 30 ║ Simplified Chinese ║
║ 31 ║ Arabic ║
║ 32 ║ Thai ║
║ 33 ║ Bokmål ║
╚════════╩═════════════════════╝
然后能发现SQL Server及数据库的默认语言都变成了Simplified Chinese,但在表中添加的中文仍为??
这是为什么?
我猜是因为表在建立的时候是按数据库的的默认语言来建立的,所以表要重建才能支持中文。
参考:如何更改SQL Server的默认语言?(How to change default languag
采用以下方法可以更快重建表:
将编写脚脚本CREATE到新查询编辑器窗口
然后将原来的表删除,再执行该查询语句实现对表的重建
发现新表可以支持中文了!✨ノ(≧∇≦)ノ✨