SQL Server:将阿拉伯字母插入数据库

时间:2016-01-14 21:35:25

标签: sql sql-server sql-server-2008

首先,当文本只是英文时,这个问题不存在,但是当我插入阿拉伯文本时,我遇到了问题。

查看我的代码

CREATE PROCEDURE insertToPinTableCardActivation
   (@callerID VARCHAR (200),  
    @vAccount VARCHAR (200))
AS
BEGIN
    DECLARE @textEnglish NVARCHAR(1000) --missing length previously

    SET @textEnglish = 'Dear customer, your Card linked to account number '+ @vAccount --missing set keyword
    SET @textEnglish = @textEnglish + ' is now activated. Thank you for banking with us.'
    SET @textEnglish = 'عزيزي الزبون، تم تفعيل بطاقة الصراف الآلي التابعة لحسابكم رقم ' + @vAccount

    INSERT INTO pinData([CallerID], [body], [processed]) 
    VALUES (@callerID, @textEnglish, 0)
END

代码创建一个混合阿拉伯语和英语的字符串,然后将其插入表格。

我的问题是看看它插入表中的内容

enter image description here

即使我已经将字段body设为nvarchar

你可以帮忙吗

更新1

我在执行存储过程时从我的SQL服务器插入

更新2

如果我去桌子并手动插入阿拉伯数据,阿拉伯字母显示正确

1 个答案:

答案 0 :(得分:4)

如果您要插入 Unicode 字符串文字,必须在 N 前缀前加上您的字符串文字 - 试试这个:

SET @textEnglish = N'...(insert your Arabic text here)...'

否则,您的文字会在存储前恢复为非Unicode 格式 - 这就是您丢失阿拉伯文字的原因....

并且:如果您要与VARCHAR参数连接,我建议使用明确的CASTNVARCHAR(包括长度铸造时!):

SET @textEnglish = N'Dear customer, your Card linked to account number ' + CAST(@vAccount AS NVARCHAR(100))