特殊字符甲骨文
special characters oracle
看到我在 Oracle 数据库上的 table 中插入了一个特殊字符“µ”:
INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES ('µg','microgram (one millionth of a gram, 10-6 gram)');
INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES ('µmole','micromole');
当我 select 我得到的数据:
SQL> select * from ABBREV where DEFINITION like '%micro%';
ABBREV DEFINITION
------------------------------ --------------------------------------------------------------------------------
omi other micro-organisms
¿µg microgram (one millionth of a gram, 10 -6 gram)
¿µmole micromole
SQL>
为什么我在“µ”之前得到“¿”以及如何在插入语句中避免它?
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
NLS_NCHAR_CHARACTERSET AL16UTF16
为了获得正确的解决方案,您必须根据本地代码页设置 NLS_LANG
环境变量。
看起来像这样:
C:\>chcp
Active code page: 850
C:\>set NLS_LANG=.WE8PC850
C:\>sqlplus ...
SQL> INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES ('µmole','micromole');
1 row created.
SQL>
另一个解决方案是使用函数 UNISTR
:
INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES (UNISTR('[=11=]B5mole'),'micromole');
看到我在 Oracle 数据库上的 table 中插入了一个特殊字符“µ”:
INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES ('µg','microgram (one millionth of a gram, 10-6 gram)');
INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES ('µmole','micromole');
当我 select 我得到的数据:
SQL> select * from ABBREV where DEFINITION like '%micro%';
ABBREV DEFINITION
------------------------------ --------------------------------------------------------------------------------
omi other micro-organisms
¿µg microgram (one millionth of a gram, 10 -6 gram)
¿µmole micromole
SQL>
为什么我在“µ”之前得到“¿”以及如何在插入语句中避免它?
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
NLS_NCHAR_CHARACTERSET AL16UTF16
为了获得正确的解决方案,您必须根据本地代码页设置 NLS_LANG
环境变量。
看起来像这样:
C:\>chcp
Active code page: 850
C:\>set NLS_LANG=.WE8PC850
C:\>sqlplus ...
SQL> INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES ('µmole','micromole');
1 row created.
SQL>
另一个解决方案是使用函数 UNISTR
:
INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES (UNISTR('[=11=]B5mole'),'micromole');