大家好我在Oracle 10g中遇到Nvarchar2列的问题,基本上我想在运行时在DB表中插入Unicode字符,我谷歌为此并找到N前缀方法在Nvarchar2列中插入或更新Unicode字符如下所示:
Insert into nvarchar_test (c_nvarchar) VALUES (N'اب ج قر');
我上面插入的字符是URDU语言字符,上面的语句工作正常,但我的要求是我想在运行时传递URDU Unicode字符作为变量而不是硬编码我在PL-SQL下面尝试过代码:
Declare
urdu_characters Nvarchar2 (500);
Begin
urdu_characters := 'اب ج';
Insert into nvarchar_test (c_nvarchar) VALUES (N urdu_characters);
End;
如上所示,代码不正确,因为我无法使用带有变量的N前缀,也不知道我将如何帮助我理清这个问题。
谢谢!
答案 0 :(得分:2)
从您的初始问题:N
更改字符串常量,因此请在声明时使用它。以下是你必须去的方式:
Declare
urdu_characters Nvarchar2 (500);
Begin
urdu_characters := N'اب ج';
Insert into nvarchar_test (c_nvarchar) VALUES (urdu_characters);
End;
但N'اب ج'
(或多或少)等同于CAST('اب ج' AS NVARCHAR2(..))
。在pl中包含urdu字符的可能性是使用ASCIISTR(..)
函数:
Declare
urdu_characters Nvarchar2 (500);
Begin
urdu_characters := 'اب ج';
Insert into nvarchar_test (c_nvarchar) VALUES (ASCIISTR(urdu_characters));
End;