Database 如何在Oracle中创建具有列名和Unicode字符项的表?

Database 如何在Oracle中创建具有列名和Unicode字符项的表?,database,oracle,unicode,nvarchar,Database,Oracle,Unicode,Nvarchar,我尝试了以下问题 create table विद्यार्थी(आयडी int, नाव varchar(50), वर्ग varchar(10)); insert into विद्यार्थी values(1,'अक्षय','पहिली'); insert into विद्यार्थी values(2,'नारायण','दुसरी'); 这在MySQL中运行良好,但在Oracle中不起作用。 Oracle给出的错误为无效字符 然后,我尝试在数据类型NVARCHAR2中

我尝试了以下问题

create table विद्यार्थी(आयडी int, नाव varchar(50), वर्ग varchar(10));
insert into विद्यार्थी values(1,'अक्षय','पहिली'); 
insert into विद्यार्थी values(2,'नारायण','दुसरी'); 
这在MySQL中运行良好,但在Oracle中不起作用。 Oracle给出的错误为
无效字符


然后,我尝试在数据类型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查询之后,我从表中得到的值作为倒置的问号,如所附的屏幕截图所示。Oracle 10g和Oracle 12c都给出了相同的结果

  • 那么,如何在Oracle中使用带有unicode字符的列名呢
  • 若我将英文列名与数据类型NVARCHAR2一起使用,并插入了unicode字符值,那个么为什么我不能在SELECT查询的结果中获得unicode字符值,如屏幕截图所示?如何解决这个问题
    在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-in”将数据插入视图中विद्यार्थी" 值(1,'अक्षय','पहिली');


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

    create table“विद्यार्थी" ("आयडी整数नाव“瓦查尔(50),”वर्ग“瓦查尔(10));
    -->错误:ORA-00957:列名重复您是否有其他SQL客户端,例如TOAD或SQL Developer而不是internet explorer中的APEX?字符编码可能是一个挑战。我在Mozilla Firefox和Oracle 12c附带的SQL Developer上尝试过同样的方法,但它仍然无法表示Devanagari字符rnet浏览器或Firefox实际上没有任何区别。它与视图一起工作吗?
    创建或替换视图”विद्यार्थी“作为选择ID作为”आयडी,名称为नाव,类别为वर्ग“来自STUDENT;
    相同错误:ORA-00957:重复列名视图使用Devanagari字符生成表和列名的想法不起作用。给出错误:**ORA-00957:重复列名**。我尝试了Oracle 12c附带的SQL Developer,而不是浏览器。它也不起作用。从V$N中选择*,你得到了什么?”LS_参数,其中参数='NLS_CHARACTERSET';
    ?参数:NLS_CHARACTERSET值:we8mswin1252答案很简单:这是不可能的。请将数据库迁移到Unicode,即字符集
    AL32UTF8
    我对Oracle一点也不熟悉,如果我有错误,请原谅,但是1)NVARCHAR2类型不是用UTF-16编码的吗?无论NLS_字符集是什么?和2)当插入NCHARCAR字段时,您应该使用N表示法。
    插入学生值(1,N)अक्षय', 不पहिली');另请参见通常为UTF-16的
    NLS\u NCHAR\u字符集。但是,表和列名存储为
    VARCHAR2
    ,而不是
    NVARCHAR2
    (请参见处的数据类型)