如何在Oracle中使用列名和带有Unicode字符的条目创建表?

时间:2019-01-08 17:12:51

标签: database oracle unicode nvarchar

我尝试了以下查询,

create table विद्यार्थी(आयडी int, नाव varchar(50), वर्ग varchar(10));
insert into विद्यार्थी values(1,'अक्षय','पहिली'); 
insert into विद्यार्थी values(2,'नारायण','दुसरी'); 

这在MySQL中很好用,但在Oracle中不起作用。 Oracle给出错误为Invalid Character


然后我尝试使用数据类型为NVARCHAR2的英语列名。

create table student(id int, name nvarchar2(50), class nvarchar2(50));
insert into student values(1,'अक्षय','पहिली'); 
insert into student values(2,'नारायण','दुसरी'); 

没有错误,但是当我解雇

select * from student;

触发SELECT查询后,我从Table中获得了作为反向问号的值,如所附的屏幕快照所示。 Oracle 10g和Oracle 12c都给出相同的结果。

Unicode Representation by Oracle 10g

  1. 那么我如何在Oracle中使用带有Unicode字符的列名?
  2. 如果我使用数据类型为NVARCHAR2的英语列名称并插入了unicode字符值,那么为什么在SELECT查询的结果中没有得到unicode字符值,如屏幕截图所示?如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在Oracle中这应该可行:

create table "विद्यार्थी" ("आयडी" integer, "नाव" varchar(50), "वर्ग" varchar(10));

但是,我建议使用“标准”字符,然后在devanagari中使用视图:

create table MY_TABLE(ID integer, NAME varchar(50), CLASS varchar(10));

CREATE OR REPLACE VIEW "विद्यार्थी" AS
SELECT ID AS "आयडी", NAME AS "नाव", CLASS AS "वर्ग";

注意,您还可以使用insert into "विद्यार्थी" values (1,'अक्षय','पहिली');

将数据插入视图

您是否还有其他任何SQL客户端,例如是TOAD还是SQL Developer,而不是Internet Explorer中的APEX?字符编码可能是一个挑战。