Sql-Server-2012

特殊字母行為問題?

  • May 7, 2020

我以非常模糊的方式提出問題,因為我無法用簡短的句子解釋我的問題是什麼。

一般來說,我有一組轉換文本和 XML 的程序。在程序裡面我有很多變數NVARCHARXML一個帶有XML列的表。在我的數據中,我有特殊的字母(例如ò)。當我執行所有程式碼時,特殊字元消失並顯示為?- 這意味著我得到VARCHARNVARCHAR.

總的來說,在最後一步之前,我一切正常。我得到了EXEC帶有臨時構造變數類型的呼叫儲存過程NVARCHAR。我進入了一個包含XML欄位的表。在這種情況下,我得到了?. 如果我手動執行程序(不在 中EXEC INTO),我得到了正確的符號。

任何想法為什麼會發生這種情況?我檢查了所有變數,它們是NVARCHAR.

這個問題有點模糊,但通常當你有 Unicode 字元並且你最終得到問號或框時,問題實際上相對簡單。當你用 聲明一個 Unicode 字元串時'single quotes'你需要在它們前面加上一個N''. N 代表國家,而不是 nvarchar(誠然,U 前綴 - 對於 Unicode - 會更有意義)。

比較:

SELECT Prefix = N'💩', NoPrefix = '💩';

結果:

Prefix      NoPrefix
------      --------
💩          ??

引用自:https://dba.stackexchange.com/questions/192169