Kategorien:

Zeichenfolgen- und Binärfunktionen (Allgemein)

LENGTH, LEN

Gibt die Länge einer Eingabezeichenfolge oder eines Binärwerts zurück. Bei Zeichenfolgen entspricht die Länge der Anzahl der Zeichen; UTF-8-Zeichen werden als Einzelzeichen gezählt. Bei Binärwerten entspricht die Länge der Anzahl der Bytes.

Syntax

LENGTH( <expression> )

LEN( <expression> )
Copy

Argumente

expression

Der Eingabeausdruck muss eine Zeichenfolge oder ein Binärwert sein.

Rückgabewerte

Der zurückgegebene Datentyp ist INTEGER (genauer gesagt NUMBER(18, 0)).

Sortierungsdetails

  • No impact. In Sprachen, in denen ein Zeichen ein Buchstabe ist und umgekehrt, verhält sich die Funktion LENGTH mit und ohne Sortierung gleich.

  • 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. Obwohl im Ungarischen „dz“ als ein einzelner Buchstaben behandelt wird, gibt Snowflake 2 für LENGTH(COLLATE('dz', 'hu')) zurück.

Beispiele

Erstellen Sie eine Tabelle und fügen Sie VARCHAR-Werte ein:

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);
Copy

Fragen Sie die Tabelle mit der Funktion LENGTH ab:

SELECT s, LENGTH(s) FROM length_function_demo;
Copy
+-----------------+-----------+
| S               | LENGTH(S) |
|-----------------+-----------|
|                 |         0 |
| Joyeux Noël     |        11 |
| Merry Christmas |        15 |
| Veselé Vianoce  |        14 |
| Wesołych Świąt  |        14 |
| 圣诞节快乐        |         5 |
| NULL            |      NULL |
+-----------------+-----------+

Für das nächste Beispiel erstellen Sie eine Tabelle und fügen BINARY-Daten ein:

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;
Copy
+-------+------------+------------+------------+
| V     | B_HEX      | B_BASE64   | B_UTF8     |
|-------+------------+------------+------------|
| hello | 68656C6C6F | 68656C6C6F | 68656C6C6F |
+-------+------------+------------+------------+

Fragen Sie die Tabelle mit der Funktion LENGTH ab:

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;
Copy
+-------+-----------+------------+---------------+----------+------------------+--------+----------------+
| 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 |
+-------+-----------+------------+---------------+----------+------------------+--------+----------------+