카테고리:

문자열 및 이진 함수 (일반)

LENGTH, LEN

입력 문자열 또는 이진 값의 길이를 반환합니다. 문자열의 경우, 길이는 문자 수이고 UTF-8 문자는 단일 문자로 계산됩니다. 이진의 경우, 길이는 바이트 수입니다.

구문

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

인자

expression

입력 식은 문자열 또는 이진 값이어야 합니다.

반환

반환된 데이터 타입은 INTEGER(더 정확하게는 NUMBER(18, 0))입니다.

데이터 정렬 세부 정보

  • No impact. 한 문자가 한 글자이고 그 반대의 경우도 마찬가지인 언어에서 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”)가 단일 알파벳 글자로 취급되는 언어에서 Snowflake는 여전히 글자가 아닌 문자로 길이를 측정합니다. 예를 들어, 헝가리어에서는 “dz”를 단일 문자로 취급하지만, 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