我问问题的方式很模糊,因为我不能用短短的一句话来解释我的问题是什么。
一般来说,我有一组转换文本和XML的过程。在这个过程中,我有很多NVARCHAR和XML变量,还有一个带有XML列的表。在我的数据中,我有一些特殊的字母(例如ò)。当我运行所有的代码时,特殊字符就消失了,并以?的形式出现--这意味着我得到了VARCHAR而不是NVARCHAR。
一般来说,在最后一步之前,一切都还好。我得到了EXEC,它用NVARCHAR类型的特殊构造变量调用存储过程。我有一个包含XML字段的表。在这种情况下,我得到了?。如果我手动运行过程(不是在EXEC INTO中),我就得到了正确的符号。
知道为什么会这样吗?我检查了所有变量,它们是NVARCHAR。
发布于 2017-12-01 15:00:50
这个问题有点模糊,但通常情况下,当您有Unicode字符并以问号或方框结束时,问题实际上是相对简单的。当您用'single quotes'声明Unicode字符串时,您需要在它们的前面加上一个N''。N代表国家,而不是nvarchar (诚然,U前缀( Unicode )更有意义)。
比较:
SELECT Prefix = N'', NoPrefix = '';结果:
Prefix NoPrefix
------ --------
??https://dba.stackexchange.com/questions/192169
复制相似问题