sql >> Database teknologi >  >> RDS >> Oracle

når jeg indsætter persisk tegn i oracle db ser jeg spørgsmålstegnet

Når du siger, at du kører på serveren, mener du gennem SQL*Plus?

Den første ting at kontrollere er, hvilket faktiske tegn der gemmes - brug DUMP-funktionen til at kontrollere dette:

Oracle Dump-funktion

Dette vil fortælle dig, hvad der faktisk er gemt. Hvis kæden mellem din klientapp og Oracle-serveren ikke er passende, kan du muligvis få tegnsætkonvertering.

Forudsat at det korrekte tegn bliver gemt, er det, du så på serveren / sqlplus, tegnkonvertering på displayet. dvs. Oracle "serverer" karakteren korrekt, men skærmen håndterer den ikke, som du forventer. For at løse dette skal du indstille miljøvariablen NLS_LANG til det korrekte tegnsæt.

f.eks. i et nyligt projekt er standarden:

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

derefter forespørge nogle data gav:

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

Men:

set NLS_LANG=AMERICAN_AMERICA.US8PC437

Kørsel af forespørgslen gav derefter:

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

Og også:

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15

gav:

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

Det vigtigste her er, at de faktiske data er de samme, det er den måde, data bliver præsenteret på din skærm, der adskiller sig, og den adfærd kan kontrolleres af NLS_LANG.



  1. Fordele ved at lære nye DB-systemer

  2. SQL Server Genopbyg og Reorganiser Index

  3. Jeg skal sende kolonnenavne ved hjælp af variabel i select-sætning i butiksprocedure, men jeg kan ikke bruge dynamisk forespørgsel

  4. Begår du disse fejl, når du bruger SQL CURSOR?