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

Oracle настрои NLS_LANG по подразбиране

Ето какво вероятно се случва:

  • Вашият клиентски набор от знаци трябва да е нещо като CP1252 или ISO-8859-15, докато всъщност вашият клиент наистина използва UTF8.
  • В този набор от знаци (UTF8), символът á отнема два байта, така че вашият клиент изпраща тези два байта, като същевременно казва на Oracle да ги третира като CP1252. В CP1252 двата байта кодират два знака, което води до интерпретиране на входа от DB като два знака, следователно length('à') е равно на 2 (и ако вмъкнете този низ, резултатът от вмъкването не е равен на à )
  • Когато зададете правилно набора от знаци, входът се третира правилно от Oracle като един знак и неговата дължина е 1 (все още два байта).

Заключение:задайте правилно своя клиентски набор от символи или ще получите грешки при превода (по този начин няма да получите незаконни знаци, но може да получите странни символи (¿ ).

Наборът от символи на базата данни се задава по време на създаването и обикновено се променя чрез експортиране/създаване на празна база данни/импортиране.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво и кога трябва да посоча setFetchSize()?

  2. Избирането на различно поле и номер на ред само за показване на идентификационен номер дава дублирани данни

  3. oracle call съхранена процедура вътре в select

  4. Как да ИЗБЕРЕТЕ колона, * ОТ ТАБЛИЦА в Oracle?

  5. Предайте Object като входен параметър към съхранена процедура с node-oracledb във възел js