2016-10-11 32 views
0

我的存儲過程有參數@Name nvarchar(250)SQL服務器替換函數返回問號對於非英文字符

這之後做一些插入過程中,從另一個表中的一些nvarchar(250)文本變量@msg nvarchar(300)

然後,我與@Name變量替換這個文本的一部分@msg

set @msg = REPLACE(@msg, '[contentname]', @Name) 

結果使用非英語

另一種語言

我已經試過

時@Name被替換爲問號
REPLACE(@msg, '[contentname]', @Name COLLATE SQL_Latin1_General_CP1_CI_AS) 

當我用戶打印@Name它正確顯示非英語/阿拉伯語的文本

任何人都可以給我想法如何解決它嗎?

感謝

+1

如何設置@Name的值?例如你是否執行存儲過程,如'exec myProc @Name = N'XXXXXXX';'?我的第一個猜測就是你要設置@Name的值而不用N前綴。 – ZLK

+0

我執行程序使用@名稱= N'XXXXXX'與N前綴,但它沒有幫助,謝謝 – Mosta

回答

0

如果要指定一個NVARCHAR字符串字面,那麼你需要一個N字符前綴是:

set @msg = REPLACE(@msg, N'[contentname]', @Name) 

否則,如果你不這樣做,SQL服務器將最有可能轉換爲VARCHAR(因爲你省略了前綴N)。

+0

我也嘗試過,它沒有幫助,謝謝 – Mosta

相關問題