No Oracle, o
LENGTH() função retorna o comprimento de seu argumento. LENGTH() também pode ser pensado como um grupo de funções. Existem cinco funções separadas; LENGTH() , LENGTHB() , LENGTHC() , LENGTH2() e LENGTH4() . Cada função calcula o comprimento de uma maneira diferente. Sintaxe
A sintaxe fica assim:
{ LENGTH
| LENGTHB
| LENGTHC
| LENGTH2
| LENGTH4
}
(char) As funções calculam os comprimentos da seguinte forma:
| Função | Calcula o comprimento usando… |
|---|---|
LENGTH() | Caracteres definidos pelo conjunto de caracteres de entrada, com o primeiro caractere da string na posição 1. |
LENGTHB() | Bytes |
LENGTHC() | Caracteres completos Unicode |
LENGTH2() | Pontos de código UCS2 |
LENGTH4() | Pontos de código UCS4 |
O tipo de argumento pode ser o seguinte:
- Ao usar o
LENGTH()eLENGTHB()sintaxe, o argumento pode ser qualquer um dos tipos de dadosCHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB, ouNCLOB. - Ao usar o
LENGTHC(),LENGTH2()eLENGTH4()sintaxe, o argumento pode ser qualquer um dos tipos de dadosCHAR,VARCHAR2,NCHAR,NVARCHAR2(mas nãoCLOBouNCLOB).
Exemplo
Segue um exemplo básico:
SELECT LENGTH('Big fat cat')
FROM DUAL; Resultado:
11
Comparado com LENGTHB()
Este exemplo mostra como os resultados podem diferir, dependendo de qual função específica você está usando e do conjunto de caracteres envolvido.
Neste caso, comparamos
LENGTH() com 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 as duas funções retornaram dois resultados diferentes. Isso ocorre porque alguns caracteres nessa string usam dois bytes.
O
LENGTH() A função retorna o comprimento em caracteres conforme definido pelo conjunto de caracteres de entrada, enquanto a função LENGTHB() função retorna o comprimento em bytes . Se retornarmos à string original, os resultados são os mesmos entre as duas funções:
SELECT
LENGTH('Big fat cat') AS LENGTH,
LENGTHB('Big fat cat') AS LENGTHB
FROM DUAL; Resultado:
LENGTH LENGTHB
_________ __________
11 11 Essa string usa apenas um byte por caractere e, portanto, o comprimento em bytes é igual ao número de caracteres.
Argumento nulo
Se o argumento for
null , o resultado é 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 Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que
null ocorre como resultado de um SQL SELECT demonstração. No entanto, você pode usar
SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido. Contagem incorreta de argumentos
Chamar a função sem passar nenhum argumento resulta em um erro:
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:
E passar muitos argumentos também resulta em um erro:
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: