- Kategorien:
Zeichenfolgen- und Binärfunktionen (Allgemein)
LENGTH, LEN¶
Gibt die Länge einer Eingabezeichenfolge oder eines Binärwertes 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> )
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
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.
In Sprachen, in denen ein Zeichenpaar oder -tripel (z. B. „dz“) als einzelner Buchstabe des Alphabets behandelt wird, misst Snowflake die Länge weiterhin in Zeichen und nicht in Buchstaben. Obwohl im Ungarischen „dz“ als ein einzelner Buchstaben behandelt wird, gibt Snowflake beispielsweise für
LENGTH(COLLATE('dz', 'hu'))
2 zurück.
Beispiele¶
SELECT s, LENGTH (s) FROM strings;
----------------------+-----------+
s | length(s) |
----------------------+-----------+
| 0 |
Joyeux Noël | 11 |
Merry Christmas | 15 |
Veselé Vianoce | 14 |
Wesołych Świąt | 14 |
圣诞节快乐 | 5 |
[NULL] | [NULL] |
----------------------+-----------+
In diesem Beispiel werden BINARY
-Daten verwendet:
Erstellen Sie eine Tabelle, und füllen Sie diese:
CREATE TABLE binary_table (v VARCHAR, b_hex BINARY, b_base64 BINARY, b_utf8 BINARY); INSERT INTO binary_table (v) VALUES ('hello'); UPDATE binary_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') ;Ausgabe:
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_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 | +-------+-----------+------------+---------------+----------+------------------+--------+----------------+