2015-03-16 2 views
0

см я вставил специальный символ «М» в мою таблицу над базой данных Oracle:специальных символов оракула

INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES ('µg','microgram (one millionth of a gram, 10-6 gram)'); 
INSERT INTO ABBREV (ABBREV, DEFINITION) VALUES ('µmole','micromole'); 

когда я выбираю данные, которые я получаю:

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> 

почему я получаю «¿» перед «μ» и как его избежать в инструкции insert?

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 
NLS_NCHAR_CHARACTERSET   AL16UTF16 
+0

Это [ссылка] (http://blogs.warwick.ac.uk/java/entry/how_to_retrieve /) может быть вам полезна. – learningloop

+0

Каков ваш набор символов клиента? Вы можете использовать 'dump()', чтобы увидеть, какой символ фактически сохранен, что покажет вам, будет ли он потерян при вставке или просто при отображении по запросу. –

+0

american_america.al32utf8 –

ответ

2

Для правильного решения, которое вы должны установить переменное окружение 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('\00B5mole'),'micromole'); 
+0

да, отлично работать. благодаря –

Смежные вопросы