一尘不染

在SQL中选择西里尔字符

sql

当用户在数据库中插入俄语单词如“锌褉松弛屑械Russian”时,数据库将其保存为“
??????”。如果他们以’N’字母插入,或者我以’N’字母进行选择,即;exec Table_Name N’没有问题。但是我不想在每个查询中都使用“
N”,因此对此有什么解决方案吗?顺便说一下,我将使用存储过程。

更新:

现在,我可以使用带有排序规则的俄语字母。但是我无法更改每种语言的排序规则,我只想了解在添加文本之后是否有任何触发器或函数可以在文本前面自动添加N。IE;
当我插入’锌褉松弛屑械褉’时,SQL应该自动使它像N’锌褉松弛屑械褉’。


阅读 202

收藏
2021-03-10

共1个答案

一尘不染

您必须使用列的数据类型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. 在对象资源管理器中,连接到SQL Server数据库引擎的实例,展开该实例,然后展开数据库。
  2. 右键单击所需的数据库,然后单击“属性”。
  3. 单击“选项”页面,然后从“排序规则”下拉列表中选择一个排序规则。
  4. 完成后,单击“确定”。

[**MORE INFO**](https://msdn.microsoft.com/en- us/library/ms175835.aspx?f=255&MSPPError=-2147217396)

2021-03-10