将 unicode 文本插入 Oracle 数据库 table
Insert unicode text into Oracle database table
我在 OracleDB 11c 中通过 [=30 创建了一个 table =] 开发者 4.1.1
CREATE TABLE FAC.FAC_CODE_CPQLDN(
ID NUMBER(10),
CODE NVARCHAR2(100) NOT NULL,
NAME NLOB,
NOTE NLOB,
PARENT_ID NUMBER(10),
CONSTRAINT FAC_CODE_CPQLDN_PK PRIMARY KEY (ID)
);
之后,我将数据插入到这个table
REM INSERTING into FAC_CODE_CPQLDN
SET DEFINE OFF;
insert into FAC_CODE_CPQLDN(ID, CODE, NAME, NOTE, PARENT_ID) values (1, 'C1.1', 'Chi phí công ty', '', 0);
但我收到错误
SQL Error: ORA-01465: invalid hex number
请告诉我如何解决它?
在插入 BLOB 字段之前尝试将 varchar2 值转换为 RAW 格式 -
insert into FAC_CODE_CPQLDN(ID, CODE, NAME, NOTE, PARENT_ID)
values (1, 'C1.1', UTL_RAW.CAST_TO_RAW('Chi phí công ty'), null, 0);
其中大部分是不必要的,您有一个字符集为 AL32UTF8 的数据库,即已经在 unicode 字符集中的数据库 - UTF-8。
如果您将列声明为 VARCHAR2,那么您应该能够只插入数据。
SQL> create table fac_code_cpqldn(name varchar2(100));
Table created.
SQL> insert into fac_code_cpqldn values ('chi phí công ty');
1 row created.
SQL>
NVARCHAR2、NLOB 等比标准数据类型更难处理。为避免疑义;这是一个 11.2 数据库:
SQL> select * from v$version;
BANNER
---------------------------------------------------------
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
你可以从 NLS_DATABASE_PARAMETERS 中找到你的字符集,正如我最初评论的那样:
SQL> select value
2 from nls_database_parameters
3 where parameter = 'NLS_CHARACTERSET';
VALUE
-------------------------------------------
AL32UTF8
我在 OracleDB 11c 中通过 [=30 创建了一个 table =] 开发者 4.1.1
CREATE TABLE FAC.FAC_CODE_CPQLDN(
ID NUMBER(10),
CODE NVARCHAR2(100) NOT NULL,
NAME NLOB,
NOTE NLOB,
PARENT_ID NUMBER(10),
CONSTRAINT FAC_CODE_CPQLDN_PK PRIMARY KEY (ID)
);
之后,我将数据插入到这个table
REM INSERTING into FAC_CODE_CPQLDN
SET DEFINE OFF;
insert into FAC_CODE_CPQLDN(ID, CODE, NAME, NOTE, PARENT_ID) values (1, 'C1.1', 'Chi phí công ty', '', 0);
但我收到错误
SQL Error: ORA-01465: invalid hex number
请告诉我如何解决它?
在插入 BLOB 字段之前尝试将 varchar2 值转换为 RAW 格式 -
insert into FAC_CODE_CPQLDN(ID, CODE, NAME, NOTE, PARENT_ID)
values (1, 'C1.1', UTL_RAW.CAST_TO_RAW('Chi phí công ty'), null, 0);
其中大部分是不必要的,您有一个字符集为 AL32UTF8 的数据库,即已经在 unicode 字符集中的数据库 - UTF-8。
如果您将列声明为 VARCHAR2,那么您应该能够只插入数据。
SQL> create table fac_code_cpqldn(name varchar2(100));
Table created.
SQL> insert into fac_code_cpqldn values ('chi phí công ty');
1 row created.
SQL>
NVARCHAR2、NLOB 等比标准数据类型更难处理。为避免疑义;这是一个 11.2 数据库:
SQL> select * from v$version;
BANNER
---------------------------------------------------------
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
你可以从 NLS_DATABASE_PARAMETERS 中找到你的字符集,正如我最初评论的那样:
SQL> select value
2 from nls_database_parameters
3 where parameter = 'NLS_CHARACTERSET';
VALUE
-------------------------------------------
AL32UTF8