Oracle
 sql >> база данни >  >> RDS >> Oracle

когато вмъкнете персийски символ в oracle db, виждам въпросителния знак

Когато казвате, че работите на сървъра, имате предвид чрез SQL*Plus?

Първото нещо, което трябва да проверите, е какъв действителен символ се съхранява - използвайте функцията DUMP, за да проверите това:

Функция за изхвърляне на Oracle

Това ще ви каже какво всъщност се съхранява. Ако веригата между вашето клиентско приложение и сървъра на Oracle не е подходяща, може да получите преобразуване на набор от знаци.

Ако приемем, че правилният знак се записва, това, което след това виждате на сървъра / sqlplus, е преобразуване на знаци на дисплея. т.е. Oracle "обслужва" символа правилно, но дисплеят не го обработва, както очаквате. За да коригирате това, трябва да настроите променливата на средата NLS_LANG на правилния набор от знаци.

например в скорошен проект по подразбиране:

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

след това запитване на някои данни даде:

NAME
-----------------------------------
MS ELLIE MARTALL

Но:

set NLS_LANG=AMERICAN_AMERICA.US8PC437

След това изпълнението на заявката даде:

NAME
-----------------------------------
MS ÉLLIE MARTALL

И също така:

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15

даде:

NAME
-----------------------------------
MS ╔LLIE MARTALL

Ключовото нещо тук е, че действителните данни са едни и същи, това е начинът, по който данните се представят на вашия дисплей, е това, което се различава и това поведение може да се контролира от NLS_LANG.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Деактивирайте всички ограничения на таблицата в Oracle

  2. Как да свия временното пространство за таблица в oracle?

  3. Как да се свържете отдалечено с базата данни Oracle 11g

  4. Защо Oracle.ManagedDataAccess не работи, когато Oracle.DataAccess го прави?

  5. regexp_substr прескача празни позиции