카테고리:

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

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는 LENGTH(COLLATE('dz', 'hu')) 에 대해 2 를 반환합니다.

테이블을 만들고 VARCHAR 값을 삽입합니다.

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

LENGTH 함수를 사용하여 테이블을 쿼리합니다.

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

다음 예제에서는 테이블을 만들고 BINARY 데이터를 삽입합니다.

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

LENGTH 함수를 사용하여 테이블을 쿼리합니다.

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