当前位置: 首页 > 面试题库 >

在SQL中选择西里尔字符

柴增
2023-03-14
问题内容

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

更新:

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


问题答案:

您必须使用列的数据类型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**](html" target="_blank">https://msdn.microsoft.com/en- us/library/ms175835.aspx?f=255&MSPPError=-2147217396)



 类似资料:
  • 我正在解析一个xml文件,但西里尔字符有问题: 这是存储过程的相关部分 要解析的SOAP输入: 存储过程 问题是@s看起来是这样的 我把N放在所有输入的前面,但问题显然在前面:我可以假设是在 但我不知道如何解决它。 可以提出解决方案吗? 谢谢

  • 问题内容: 我正在尝试使用php的函数json_encode将西里尔UTF-8数组编码为JSON字符串。示例代码如下所示: 它工作正常,但脚本的结果表示为: 每个西里尔字母组成6个字符。有没有一种方法可以获取键/值对的原始字符,而不是编码的字符? 问题答案: 您不能在此处使用JSON_UNESCAPED_UNICODE常量吗?

  • 如何使其在输出俄语时,输出俄语字母,而不是�� ����� �������� �����! 它不仅在控制台中工作,而且在终端中一切正常 我试过这个 > 窗口 还有这个 窗户- 还有这个 在eclipse主目录中打开eclipse.ini,或者在STS(Spring Tool Suite)的情况下打开STS. ini,将下面的行放在文件末尾-Dfile.encoding=UTF-8 但还是做不到。请

  • Adobe Reader无法正确显示我的PDF。对于其他PDF阅读器来说,这是一个语法问题,因为我听说Adobe Reader对PDF语法要求更严格。字体似乎是它们应该的两倍大,但水平间距是正确的,这使得字体相互重叠。 这是我的C#代码(字体创建代码在本文末尾)。

  • 问题内容: 以下是在SQL中达到其结果的最有效的方法: 可以更好地使用联接并达到相同的结果吗? 问题答案: 您可能更喜欢使用a而不是的原因之一是,如果子句中的Values包含any,您将永远不会获得任何结果。如果确实要使用,请记住要始终考虑子查询是否可能带回NULL值! RE:评论中的问题 ‘x’NOT IN(NULL,’a’,’b’) ≧ ‘x’<> NULL和’x’<>’a’和’x’<>’b’

  • 问题内容: 我使用SQL Server 2005,并且尝试存储西里尔字母,但是我无法通过尝试运行以下SQL代码来使用SQL代码: 或从C#发生同样的问题,但是从SQL Server插入/更新列可以正常工作并且可以正常存储。 列的数据类型为。 问题答案: 您必须在字符串之前添加N前缀。 当您隐式声明一个字符串变量时,默认情况下会将其视为varchar。添加前缀N表示后续字符串采用Unicode(nv