7

我使用 SQL Server 2005,我尝试存储西里尔字符,但我不能通过尝试运行 SQL 代码来运行这是 SQL Server:

INSERT INTO Assembly VALUES('Македонски парлиамент број 1','','');

或者从 C# 发生同样的问题,但是从 SQL Server 插入/更新列它可以工作并且它可以正常存储。

列的数据类型是nvarchar

4

2 回答 2

24

您必须在字符串之前添加 N 前缀。

当您隐式声明一个字符串变量时,默认情况下它被视为 varchar。添加前缀 N 表示后续字符串是 Unicode (nvarchar)。

 INSERT INTO Assembly VALUES(N'Македонски парлиамент број 1','','');

这里有一些阅读:

http://databases.aspfaq.com/general/why-do-some-sql-strings-have-an-n-prefix.html

https://msdn.microsoft.com/en-IN/library/ms186939.aspx

T-SQL语句中前缀N是什么意思?

于 2013-05-26T18:15:44.610 回答
0

我不确定您是在执行静态存储过程还是脚本,但是当您将文本保存到磁盘时,文本可能没有正确编码。我遇到了这个问题,通过更正我保存到磁盘以进行 osql 处理的 SQL 的编码,我的问题在 PowerShell 中得到了解决:

     Out-File -FilePath "MyFile.sql" -InputObject $MyRussianSQL -Encoding "Unicode" -Force;
     & osql -U myuser -P password -i "MyFile.sql";
于 2017-05-16T16:37:12.853 回答