カテゴリ:

文字列とバイナリ関数 (一般)

LENGTH, LEN

入力文字列の長さ、またはバイナリ値を返します。文字列の長さは文字数であり、 UTF-8の文字は単一の文字としてカウントされます。バイナリの長さはバイト数です。

構文

LENGTH( <expression> )
LEN( <expression> )
Copy

引数

expression

入力式は文字列またはバイナリ値である必要があります。

戻り値

返されるデータ型は INTEGER (正確にはNUMBER(18、0))です。

照合の詳細

  • No impact. 1つの文字が1文字として扱われる言語、またはその逆では、 LENGTH は照合の有無にかかわらず同じように動作します。

  • 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.

    • 文字のペアまたはトリプレット(例:「dz」)がアルファベットの1文字として扱われる言語では、Snowflakeは文字ではなく文字の長さを測定します。例えば、ハンガリー語では「dz」は1文字として扱われますが、Snowflakeは LENGTH(COLLATE('dz', 'hu')) に対して2を返します。

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

この例では、 BINARY データを使用します。

テーブルを作成して入力します。

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

出力:

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