In Oracle die LENGTH()
Funktion gibt die Länge ihres Arguments zurück.
LENGTH()
kann auch als eine Gruppe von Funktionen betrachtet werden. Es gibt fünf separate Funktionen; LENGTH()
, LENGTHB()
, LENGTHC()
, LENGTH2()
, und LENGTH4()
. Jede Funktion berechnet die Länge anders.
Syntax
Die Syntax lautet wie folgt:
{ LENGTH
| LENGTHB
| LENGTHC
| LENGTH2
| LENGTH4
}
(char)
Die Funktionen berechnen Längen wie folgt:
Funktion | Berechnet die Länge mit … |
---|---|
LENGTH() | Zeichen wie durch den Eingabezeichensatz definiert, wobei das erste Zeichen der Zeichenfolge die Position 1 hat. |
LENGTHB() | Bytes |
LENGTHC() | Vollständige Unicode-Zeichen |
LENGTH2() | UCS2-Codepunkte |
LENGTH4() | UCS4-Codepunkte |
Der Argumenttyp kann wie folgt sein:
- Bei Verwendung von
LENGTH()
undLENGTHB()
Syntax kann das Argument jeder der DatentypenCHAR
sein ,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, oderNCLOB
. - Bei Verwendung von
LENGTHC()
,LENGTH2()
undLENGTH4()
Syntax kann das Argument jeder der DatentypenCHAR
sein ,VARCHAR2
,NCHAR
,NVARCHAR2
(aber nichtCLOB
oderNCLOB
).
Beispiel
Hier ist ein einfaches Beispiel:
SELECT LENGTH('Big fat cat')
FROM DUAL;
Ergebnis:
11
Verglichen mit LENGTHB()
Dieses Beispiel zeigt, wie sich die Ergebnisse je nach verwendeter spezifischer Funktion und verwendetem Zeichensatz unterscheiden können.
In diesem Fall vergleichen wir LENGTH()
mit LENGTHB()
:
SELECT
LENGTH('Böyük yağlı pişik') AS LENGTH,
LENGTHB('Böyük yağlı pişik') AS LENGTHB
FROM DUAL;
Ergebnis:
LENGTH LENGTHB _________ __________ 17 22
Wir können sehen, dass die beiden Funktionen zwei unterschiedliche Ergebnisse zurückgegeben haben. Dies liegt daran, dass einige Zeichen in dieser Zeichenfolge zwei Bytes verwenden.
Die LENGTH()
Die Funktion gibt die Länge in Zeichen zurück, wie sie durch den Eingabezeichensatz definiert ist, während die LENGTHB()
Funktion gibt die Länge in Bytes zurück .
Wenn wir zum ursprünglichen String zurückkehren, sind die Ergebnisse zwischen den beiden Funktionen gleich:
SELECT
LENGTH('Big fat cat') AS LENGTH,
LENGTHB('Big fat cat') AS LENGTHB
FROM DUAL;
Ergebnis:
LENGTH LENGTHB _________ __________ 11 11
Diese Zeichenfolge verwendet nur ein Byte pro Zeichen, und daher ist die Länge in Bytes gleich der Anzahl der Zeichen.
Null-Argument
Wenn das Argument null
ist , ist das Ergebnis null
:
SET NULL 'null';
SELECT
LENGTH(null) AS LENGTH,
LENGTHB(null) AS LENGTHB,
LENGTHC(null) AS LENGTHC,
LENGTH2(null) AS LENGTH2,
LENGTH4(null) AS LENGTH4
FROM DUAL;
Ergebnis:
LENGTH LENGTHB LENGTHC LENGTH2 LENGTH4 _________ __________ __________ __________ __________ null null null null null
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null
tritt als Ergebnis eines SQL SELECT
auf Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Falsche Argumentanzahl
Der Aufruf der Funktion ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT LENGTH()
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT LENGTH() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Und das Übergeben zu vieler Argumente führt ebenfalls zu einem Fehler:
SELECT LENGTH('Big fat cat', 'oops')
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT LENGTH('Big fat cat', 'oops') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: