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中,这应该是可能的:
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
(请参见处的数据类型)