当用户将“пример”等俄语单词插入数据库时,数据库将其保存为“??????”。如果他们插入'N'字母或我选择'N'字母,即; exec Table_NameN'иытание'没有问题。但我不想在每个查询中使用'N',那么有什么解决方案吗?顺便说一句,我会使用存储过程。
更新
现在我可以使用带有alter collation的俄语字母。但我不能改变每种语言的校对,我只想学习是否有任何触发器或函数在文本添加后自动添加N在文本前面。 IE浏览器;当我插入'пример'时,SQL应该像N'пример一样自动地使用它。
答案 0 :(得分:4)
您必须使用列的数据类型NVARCHAR
来插入unicode字母,插入时也必须使用N'value'
。
您可以按照以下方式进行测试:
CREATE TABLE #test
(
varcharCol varchar(40),
nvarcharCol nvarchar(40)
)
INSERT INTO #test VALUES (N'иытание', N'иытание')
SELECT * FROM #test
<强>输出强>
varcharCol nvarcharCol
??????? иытание
当您看到返回问号varchar
的数据类型??????
列和返回俄语字符nvarchar
的数据类型иытание
列时。
<强>更新强>
问题是您的数据库排序规则不支持俄语字母。
答案 1 :(得分:4)
要在数据库中存储和选择 Unicode 字符,您必须使用 NVARCHAR 而不是 VARCHAR 。要插入Unicode数据,您必须使用 N
请参阅此链接https://technet.microsoft.com/en-us/library/ms191200%28v=sql.105%29.aspx
这些数据类型的n前缀来自国家(Unicode)数据类型的ISO标准。
答案 2 :(得分:4)
很难发表评论我会推荐此链接Info
declare @test TABLE
(
Col1 varchar(40),
Col2 varchar(40),
Col3 nvarchar(40),
Col4 nvarchar(40)
)
INSERT INTO @test VALUES
('иытание',N'иытание','иытание',N'иытание')
SELECT * FROM @test
<强> RESULT 强>
答案 3 :(得分:0)
将列的类型(包含俄语)从varchar更改为nvarchar。