LENGTH, LEN

LENGTH, LEN (길이)

입력 문자열 또는 바이너리 값의 길이를 반환해요. 문자열의 경우 길이는 문자 수이고, UTF-8 문자는 단일 문자로 계산돼요. 바이너리의 경우 길이는 바이트 수예요.

출처: Snowflake SQL Reference - LENGTH, LEN

본문

구문

LENGTH( <expression> )

LEN( <expression> )

인자

expression

입력 표현식은 문자열 또는 바이너리 값이어야 해요.

반환 값

반환되는 데이터 타입은 INTEGER (더 정확히는 NUMBER(18, 0))예요.

정렬 규칙(collation) 세부 사항

  • 영향 없음. 한 문자가 한 글자이고 그 반대인 언어에서 LENGTH 함수는 정렬 규칙 유무와 관계없이 동일하게 동작해요.

  • 알파벳에 이중자음/삼중자음(digraph 또는 trigraph, 예: 헝가리어의 "Dz", "Dzs")이 있는 언어에서는, 각 이중자음·삼중자음의 각 문자가 하나의 다중 문자로 취급되지 않고 독립적인 문자로 취급돼요. 예를 들어 헝가리어가 "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);

LENGTH 함수를 사용해 테이블을 조회해요.

SELECT s, LENGTH(s) FROM length_function_demo;
+-----------------+-----------+
| 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;
+-------+------------+------------+------------+
| 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;
+-------+-----------+------------+---------------+----------+------------------+--------+----------------+
| 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 |
+-------+-----------+------------+---------------+----------+------------------+--------+----------------+

더 알아보기