首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >N‘INSERT INTO vs INSERT INTO

N‘INSERT INTO vs INSERT INTO
EN

Stack Overflow用户
提问于 2014-05-13 22:59:02
回答 1查看 845关注 0票数 0

我正在使用.Net的一个定制库来访问sql server。

此库在服务器中执行此查询:

代码语言:javascript
复制
exec sp_executesql N'INSERT INTO Testable (testcolumn1, testcolumn2) 
   VALUES (@const795, @const796) ', N'@const795 int, @const796 nvarchar(50)', 
   @const795=1803496, @const796='ÄÅÉæÆôöòÇ Münchenß дие Таль'

结果:

代码语言:javascript
复制
Column 1 : 1803496
Column 2 : ÄÅÉæÆôöòÇ Münchenß ??? ????

如果我手动执行此查询:

代码语言:javascript
复制
INSERT INTO Testable (testcolumn1, testcolumn2) 
VALUES (1803496,N'ÄÅÉæÆôöòÇ Münchenß дие Таль')

结果:

代码语言:javascript
复制
Column 1 : 1803496
Column 2 : ÄÅÉæÆôöòÇ Münchenß дие Таль

在UniCode编码中N'INSERT INTO不应该存储参数吗?为什么第二个查询保存“диеТаль”是好的,而第一个查询不是?

列2是nvarchar类型,列的排序规则是Latin1_General_CI_AS。

另一方面,我还有另一个问题,因为这个库实际上是在发送:

代码语言:javascript
复制
exec sp_executesql N'INSERT INTO Testable (testcolumn1, testcolumn2)
  VALUES (@const795, @const796) ',N'@const795 int,@const796 nvarchar(50)',
  @const795=1803496, @const796= 'ÄÅÉæÆôöòÇ Münchenß ??? ????'

用问号而不是俄文字符。我之所以知道这一点,是因为我使用过SQL分析器来“嗅探”来自库的查询。

从库中调试查询我可以看到这个“диеТаль”字符的正确值,直到将查询发送到数据库。但是sql分析器得到“?”字符·为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

发布于 2014-05-13 23:02:12

当您将@const796设置为某个值时,库需要指定"N“。@const796=N'ÄÅÉæÆôöòÇ Münchenß дие Таль'

代码语言:javascript
复制
 exec sp_executesql N'INSERT INTO Testable (testcolumn1, testcolumn2) 
    VALUES (@const795, @const796) ', N'@const795 int, @const796 nvarchar(50)', 
    @const795=1803496, @const796=N'ÄÅÉæÆôöòÇ Münchenß дие Таль'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23634816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档