Thread Stringlänge ermitteln für ORACLE
(13 answers)
Opened by tcicit at 2013-01-29 10:10
Hallo,
das Problem tritt natürlich nur auf, wenn die Datenbank UTF-8 benutzt, z.B. NLS_CHARACTERSET = 'AL32UTF8' 2013-01-29T10:46:13 Muffi Zumindest in neueren Versionen hängt das von der Einstellung NLS_LENGTH_SEMANTICS ab. Die möglichen Werte sind CHAR und BYTE. Prüfe: Code: (dl
)
SELECT * FROM NLS_DATABASE_PARAMETERS; Das kann ansonsten (also unabhängig von der obigen globalen Einstellung) auch per Spalte eingestellt werden: Code: (dl
)
CREATE TABLE [tablename] ([columname] VARCHAR2(2000 CHAR) [, ...]); Oder man stellt dem DDL-Script voran: Code: (dl
)
ALTER SESSION SET NLS_LENGTH_SEMANTICS = 'CHAR'; Und schließlich kann man die Einstellung auch per Spalte modifizieren: Code: (dl
)
ALTER TABLE [tablename] MODIFY [columname] VARCHAR2(2000 CHAR); Hiernach kannst Du 2000 Umlaute oder auch kyrillischen oder chinesischen Text in die Spalte schreiben. Auch wenn der Kunde den Daumen drauf hat: Diese Änderung sollte gemacht (veranlasst) werden. Wenn in einer UTF-8-codierten Datenbank CHAR- oder VARCHAR-Spalten enthalten sind, die potentiell mehrbytige Zeichen enthalten können, ist es eindeutig ein Designfehler, wenn sie NLS_LENGTH_SEMANTICS = 'BYTE' haben. Grüße payx Last edited: 2013-01-30 11:26:21 +0100 (CET) |