PrinzipFür die Ausgabe und automatische Konvertierung von Datums- und Zahlenwerten sind Defaultformate einstellbar. Die Umgebungsvariablen NLS_LANG, NLS_DATE_FORMAT und NLS_NUMERIC_CHARACTERS bestimmen die Defaultformate. Sind die Variablen NLS_DATE_FORMAT oder NLS_NUMERIC_CHARACTERS nicht gesetzt, werden über NLS_LANG wiederum Defaultwerte hierfür spezifiziert. Die Einstellung der Variablen erfolgt durch setzen von Shellvariablen, Registry-Einträge oder "alter session" - Befehls. Beispielalter session set NLS_DATE_FORMAT = 'dd.mm.yyyy'; Aufbau von NLS_LANGSprache_Territorium.Zeichensatz
Das Territorium bestimmt die Defaultwerte für NLS_DATE_FORMAT und NLS_NUMERIC_CHARACTERS: GERMANY (Deutsch)NLS_DATE_FORMAT dd.mm.yy NLS_NUMERIC_CHARACTERS ,. AMERICA (Englisch)NLS_DATE_FORMAT dd-mon-yy NLS_NUMERIC_CHARACTERS ., Die Variable NLS_DATE_FORMAT beschreibt das Defaultformat für die Ausgabe und Umwandlung eines Datums. Beispiel: dd.mm.yyyy NLS_NUMERIC_CHARACTERS definiert die Zeichen für Tausenderstellen und den Dezimalpunkt: Deutsch: ,. Englisch: ., Achtung bei der impliziten Typkonvertierung:Eingaben sind immer in englischer Sprache vorzunehmen! Beispiel (Multiplikation von Preis mit 1,2)
Das dritte Beispiel ist nur korrekt, wenn NLS_NUMERIC_CHARACTERS auf ',.' steht! Konvertierung mit Angabe von NLS_NUMERIC_CHARACTERSto_char (zahl, format, nls_format) to_number (zeichenkette, format, nls_format) Beispielselect to_char (anzahl*preis, '999G990D00', 'NLS_NUMERIC_CHARACTERS='',.''') Umgebungsvariable NLS_SORT
Das folgende Beispiel zeigt den Unterschied bei der linguistischen und bei der binären Sortierung:alter session set nls_sort=german; select kunden_nr, name1 from kunde order by name1;
alter session set nls_sort=binary; select kunden_nr, name1 from kunde order by name1;
NLS - FunktionenMit den folgenden Funktionen kann unter Angabe der Sprache (oder binär) linguistisch korrekt gearbeitet werden:
nlsparam: 'NLS_SORT=german' oder 'NLS_SORT=binary' NLSSORT wandelt eine Zeichenkette in eine Zeichenkette um, die aus einer Anzahl von Bytes in Hexadezimal-Schreibweise besteht: BeispieleNLSSORT('Ä', 'NLS_SORT=german') NLSSORT('Ä', 'NLS_SORT=binary') NLSSORT('Ä', 'NLS_SORT=ascii7') NLSSORT('Ä', 'NLS_SORT=french') Um unabhängig von Umgebungsvariablen zu sein, können damit SQL-Befehle korrekt gestaltet werden: select kunden_nr, name1
Damit für diesen Sortiervorgang ein Index benutzt werden kann, sollte ggf. ein function based Index (in 8i nur Enterprise Edition) angelegt werden: create index idx_kunde_name1 on KUNDE Stichwörter NLS National Language Support NLS_LANG NLS_DATE_FORMAT NLS_NUMERIC_CHARACTERSGERMAN_GERMANY.WE8ISO8859P1 AMERICAN_AMERICA.WE8ISO8859P1 NLS_LANGUAGE NLS_INITCAP NLS_LOWER NLS_UPPER NLSSORT NLS_SORT Beispiel Beispiele |