- Categorias:
LENGTH, LEN¶
Retorna o comprimento de um valor de cadeia de caracteres ou binário da entrada. Para cadeias de caracteres, o comprimento é o número de caracteres, e os caracteres UTF-8 são contados como um único caractere. Para binário, o comprimento é o número de bytes.
Sintaxe¶
LENGTH( <expression> )
LEN( <expression> )
Argumentos¶
expression
A expressão de entrada deve ser uma cadeia de caracteres ou um valor binário.
Retornos¶
O tipo de dados retornado é INTEGER (mais precisamente, NUMBER(18, 0)).
Detalhes do agrupamento¶
No impact. Nos idiomas nos quais um caractere é uma letra e vice-versa, a função LENGTH se comporta da mesma forma com e sem agrupamento.
In languages where the alphabet contains digraphs or trigraphs (such as «Dz» and «Dzs» in Hungarian), each character in each digraph and trigraph is treated as an independent character, not as part of a single multi-character letter. Por exemplo, embora o húngaro trate «dz» como uma única letra, o Snowflake retorna
2
paraLENGTH(COLLATE('dz', 'hu'))
.
Exemplos¶
Criar uma tabela e inserir valores VARCHAR:
CREATE OR REPLACE TABLE length_function_demo (s VARCHAR);
INSERT INTO length_function_demo VALUES
(''),
('Joyeux Noël'),
('Merry Christmas'),
('Veselé Vianoce'),
('Wesołych Świąt'),
('圣诞节快乐'),
(NULL);
Consultar a tabela usando a função LENGTH:
SELECT s, LENGTH(s) FROM length_function_demo;
+-----------------+-----------+
| S | LENGTH(S) |
|-----------------+-----------|
| | 0 |
| Joyeux Noël | 11 |
| Merry Christmas | 15 |
| Veselé Vianoce | 14 |
| Wesołych Świąt | 14 |
| 圣诞节快乐 | 5 |
| NULL | NULL |
+-----------------+-----------+
No próximo exemplo, crie uma tabela e insira os dados do site BINARY:
CREATE OR REPLACE TABLE binary_demo_table (
v VARCHAR,
b_hex BINARY,
b_base64 BINARY,
b_utf8 BINARY);
INSERT INTO binary_demo_table (v) VALUES ('hello');
UPDATE binary_demo_table SET
b_hex = TO_BINARY(HEX_ENCODE(v), 'HEX'),
b_base64 = TO_BINARY(BASE64_ENCODE(v), 'BASE64'),
b_utf8 = TO_BINARY(v, 'UTF-8');
SELECT * FROM binary_demo_table;
+-------+------------+------------+------------+
| V | B_HEX | B_BASE64 | B_UTF8 |
|-------+------------+------------+------------|
| hello | 68656C6C6F | 68656C6C6F | 68656C6C6F |
+-------+------------+------------+------------+
Consultar a tabela usando a função LENGTH:
SELECT v, LENGTH(v),
TO_VARCHAR(b_hex, 'HEX') AS b_hex, LENGTH(b_hex),
TO_VARCHAR(b_base64, 'BASE64') AS b_base64, LENGTH(b_base64),
TO_VARCHAR(b_utf8, 'UTF-8') AS b_utf8, LENGTH(b_utf8)
FROM binary_demo_table;
+-------+-----------+------------+---------------+----------+------------------+--------+----------------+
| V | LENGTH(V) | B_HEX | LENGTH(B_HEX) | B_BASE64 | LENGTH(B_BASE64) | B_UTF8 | LENGTH(B_UTF8) |
|-------+-----------+------------+---------------+----------+------------------+--------+----------------|
| hello | 5 | 68656C6C6F | 5 | aGVsbG8= | 5 | hello | 5 |
+-------+-----------+------------+---------------+----------+------------------+--------+----------------+