Sql-Server-2012
特殊字母行為問題?
我以非常模糊的方式提出問題,因為我無法用簡短的句子解釋我的問題是什麼。
一般來說,我有一組轉換文本和 XML 的程序。在程序裡面我有很多變數
NVARCHAR
和XML
一個帶有XML
列的表。在我的數據中,我有特殊的字母(例如ò
)。當我執行所有程式碼時,特殊字元消失並顯示為?
- 這意味著我得到VARCHAR
了NVARCHAR
.總的來說,在最後一步之前,我一切正常。我得到了
EXEC
帶有臨時構造變數類型的呼叫儲存過程NVARCHAR
。我進入了一個包含XML
欄位的表。在這種情況下,我得到了?
. 如果我手動執行程序(不在 中EXEC INTO
),我得到了正確的符號。任何想法為什麼會發生這種情況?我檢查了所有變數,它們是
NVARCHAR
.
這個問題有點模糊,但通常當你有 Unicode 字元並且你最終得到問號或框時,問題實際上相對簡單。當你用 聲明一個 Unicode 字元串時
'single quotes'
,你需要在它們前面加上一個N''
. N 代表國家,而不是 nvarchar(誠然,U 前綴 - 對於 Unicode - 會更有意義)。比較:
SELECT Prefix = N'💩', NoPrefix = '💩';
結果:
Prefix NoPrefix ------ -------- 💩 ??