Sql-Server-2012
sp_executesql 將非標準字元更改為?
我正在嘗試使用
sp_executesql
來執行命令,但我遇到了一個問題,即非英文字元(又名中文和日文)更改為 ??? 跑的時候。sql server 2008R2 & 2012
範常式式碼
DECLARE @text nvarchar(30) = N'select ''J こんにちは C 你好''' SELECT @text SELECT N'J こんにちは C 你好' exec sp_executesql @text exec sp_executesql N'select ''J こんにちは C 你好'''
J= 日文 ‘Hi’ C = 中文 ‘Hi’ 由Google翻譯處理以用於測試目的
輸出
------------------------------ select 'J こんにちは C 你好' ------------ J こんにちは C 你好 ------------ J ????? C ?? ------------ J ????? C ??
如您所見,當自然執行或選擇程式碼時,輸出按預期返回,但是一旦通過 sp_executesql 它返回為?人物。值得注意的是,如果您嘗試發送 varchar 而不是 nvarchar 它會出錯,因此它挑釁地使用 unicode。
為輸入嘗試了幾種不同的排序規則,但這似乎並沒有改變任何東西
您應該使用SELECT 在 SELECT中傳遞您的 unicode 字元:
UNICODE``N
DECLARE @text nvarchar(30) = N'select N''J こんにちは C 你好''' SELECT @text SELECT N'J こんにちは C 你好' exec sp_executesql @text exec sp_executesql N'select N''J こんにちは C 你好'''