En Oracle, LENGTH()
función devuelve la longitud de su argumento.
LENGTH()
también se puede considerar como un grupo de funciones. Hay cinco funciones separadas; LENGTH()
, LENGTHB()
, LENGTH()
, LENGTH2()
y LENGTH4()
. Cada función calcula la longitud de forma diferente.
Sintaxis
La sintaxis es así:
{ LENGTH
| LENGTHB
| LENGTHC
| LENGTH2
| LENGTH4
}
(char)
Las funciones calculan las longitudes de la siguiente manera:
Función | Calcula la longitud usando… |
---|---|
LENGTH() | Caracteres definidos por el conjunto de caracteres de entrada, con el primer carácter de la cadena en la posición 1. |
LENGTHB() | Bytes |
LENGTH() | Caracteres completos Unicode |
LENGTH2() | Puntos de código UCS2 |
LENGTH4() | Puntos de código UCS4 |
El tipo de argumento puede ser el siguiente:
- Al usar
LENGTH()
yLENGTH()
sintaxis, el argumento puede ser cualquiera de los tipos de datosCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
oNCLOB
. - Al usar
LENGTHC()
,LENGTH2()
yLENGTH4()
sintaxis, el argumento puede ser cualquiera de los tipos de datosCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
(pero noCLOB
oNCLOB
).
Ejemplo
He aquí un ejemplo básico:
SELECT LENGTH('Big fat cat')
FROM DUAL;
Resultado:
11
Comparado con LENGTHB()
Este ejemplo muestra cómo los resultados pueden diferir, según la función específica que esté utilizando y el juego de caracteres involucrado.
En este caso, comparamos LENGTH()
con LENGTHB()
:
SELECT
LENGTH('Böyük yağlı pişik') AS LENGTH,
LENGTHB('Böyük yağlı pişik') AS LENGTHB
FROM DUAL;
Resultado:
LENGTH LENGTHB _________ __________ 17 22
Podemos ver que las dos funciones arrojaron dos resultados diferentes. Esto se debe a que algunos caracteres de esta cadena utilizan dos bytes.
El LENGTH()
devuelve la longitud en caracteres definida por el conjunto de caracteres de entrada, mientras que LENGTHB()
la función devuelve la longitud en bytes .
Si volvemos a la cadena original, los resultados son los mismos entre las dos funciones:
SELECT
LENGTH('Big fat cat') AS LENGTH,
LENGTHB('Big fat cat') AS LENGTHB
FROM DUAL;
Resultado:
LENGTH LENGTHB _________ __________ 11 11
Esta cadena usa solo un byte por carácter, por lo que la longitud en bytes es la misma que la cantidad de caracteres.
Argumento nulo
Si el argumento es null
, el resultado es 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;
Resultado:
LENGTH LENGTHB LENGTHC LENGTH2 LENGTH4 _________ __________ __________ __________ __________ null null null null null
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null
ocurre como resultado de un SQL SELECT
declaración.
Sin embargo, puede usar SET NULL
para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null
debe ser devuelto.
Recuento de argumentos incorrecto
Llamar a la función sin pasar ningún argumento da como resultado un error:
SELECT LENGTH()
FROM DUAL;
Resultado:
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:
Y pasar demasiados argumentos también da como resultado un error:
SELECT LENGTH('Big fat cat', 'oops')
FROM DUAL;
Resultado:
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: