カテゴリ:

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

LENGTH, LEN

Returns the length of an input string or binary value. For strings, the length is the number of characters, and UTF-8 characters are counted as a single character. For binary, the length is the number of bytes.

構文

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

引数

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

この例では、 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')
  ;

出力:

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