特信行为问题?

Bog*_*nov 0 xml dynamic-sql sql-server-2012 cast unicode

我以非常模糊的方式提出问题,因为我无法用简短的句子解释我的问题是什么。

一般来说,我有一组转换文本和 XML 的过程。里面的程序,我有很多NVARCHARXML变量与表XML列。在我的数据中,我有特殊的字母(例如ò)。当我运行所有代码时,特殊字符消失并显示为?- 这意味着我得到了VARCHAR而不是NVARCHAR.

总的来说,我一切都好,直到最后的步骤。我得到了EXEC哪个调用存储过程具有类型为临时构造的变量NVARCHAR。我有一个包含XML字段的表。在这种情况下,我得到了?. 如果我手动运行程序(不在 中EXEC INTO),我会得到正确的符号。

任何想法为什么会发生这种情况?我检查了所有变量,它们是NVARCHAR.

Aar*_*and 6

这个问题有点含糊,但通常当您有 Unicode 字符并以问号或框结束时,问题实际上相对简单。当你用 声明一个 Unicode 字符串时'single quotes'你需要在它们前面加上一个N''. N 代表国家,而不是 nvarchar(诚然,U 前缀 - 对于 Unicode - 会更有意义)。

相比:

SELECT Prefix = N'', NoPrefix = '';
Run Code Online (Sandbox Code Playgroud)

结果:

Prefix      NoPrefix
------      --------
           ??
Run Code Online (Sandbox Code Playgroud)