- 카테고리:
문자열 및 이진 함수 (일반)
LPAD¶
다른 문자열의 문자로 문자열을 왼쪽에 채우거나 다른 이진 값의 바이트로 이진 값을 왼쪽에 채웁니다.
인자(base
)는 length_expr
인자의 문자/바이트와 함께 pad
길이로 왼쪽에 채워집니다.
- 참고 항목:
구문¶
LPAD( <base>, <length_expr> [, <pad>] )
인자¶
base
VARCHAR 또는 BINARY 값.
length_expr
정수로 평가되는 식입니다. 이 식에서 지정하는 사항은 다음과 같습니다.
입력이 VARCHAR 인 경우 반환할 UTF-8 문자 수입니다.
입력이 BINARY 인 경우 반환할 바이트 수입니다.
pad
VARCHAR 또는 BINARY 값. 유형은
base
인자의 데이터 타입과 일치해야 합니다. 이 인자의 문자(또는 바이트)는base
를 채우는 데 사용됩니다.
반환¶
반환된 값의 데이터 타입은 base
입력 값(VARCHAR 또는 BINARY)의 데이터 타입과 동일합니다.
사용법 노트¶
base
인자가length_expr
보다 길면length_expr
길이로 잘립니다.pad
인자는 여러 문자/바이트 길이일 수 있습니다.pad
인자는 원하는length_expr
길이에 도달할 때까지 결과에서 반복되어,pad
인자에서 불필요한 문자/바이트를 자릅니다.pad
인자가 비어 있으면 패딩이 삽입되지 않지만, 결과는 여전히length_expr
길이로 잘립니다.base
가 문자열인 경우 기본pad
문자열은' '
(단일 공백)입니다.base
가 이진 값이면pad
인자를 명시적으로 제공해야 합니다.
데이터 정렬 세부 정보¶
데이터 정렬은 VARCHAR 입력에 적용됩니다. 첫 번째 인자의 입력 데이터 타입이 BINARY 인 경우 데이터 정렬이 적용되지 않습니다.
No impact. 데이터 정렬이 구문적으로 허용되지만, 데이터 정렬은 처리에 영향을 주지 않습니다. 예를 들어, 두 글자 및 세 글자 문자가 있는 언어(예: 헝가리어의 “dzs”, 체코어의 “ch”)는 여전히 길이 인자에 대해 한 문자가 아닌 두 글자 또는 세 문자로 계산합니다.
The collation of the result is the same as the collation of the input. 이는 반환된 값이 중첩 함수 호출의 일부로서 다른 함수에 전달되는 경우에 유용할 수 있습니다.
현재, Snowflake에서는
base
인자와pad
인자가 서로 다른 데이터 정렬 지정자를 가질 수 있습니다. 그러나 반환 값에는 하나의 정렬 지정자만 있기 때문에 개별 정렬 지정자를 모두 유지할 수는 없습니다.base
문자열과 데이터 정렬이 다른pad
문자열을 사용하지 않는 것이 좋습니다.
예¶
LPAD 함수는 값이 특정 형식을 따르도록 문자열을 왼쪽에 문자로 채울 수 있습니다. 다음 예제에서는 이 표준을 충족하기 위해 열의 id
값은 8자 길이에 왼쪽에 0이 추가되어야 한다고 가정합니다.
id
열이 있는 테이블을 만들고 값을 삽입합니다.
CREATE OR REPLACE TABLE demo_lpad_ids (id VARCHAR);
INSERT INTO demo_lpad_ids VALUES
('5'),
('50'),
('500');
LPAD 함수를 사용하여 쿼리를 실행하여 출력의 값이 표준을 충족하도록 합니다.
SELECT id, LPAD(id, 8, '0') AS padded_ids
FROM demo_lpad_ids;
+-----+------------+
| ID | PADDED_IDS |
|-----+------------|
| 5 | 00000005 |
| 50 | 00000050 |
| 500 | 00000500 |
+-----+------------+
다음 추가 예제에서는 LPAD 함수를 사용하여 왼쪽의 VARCHAR 및 BINARY 데이터를 채웁니다.
테이블을 만들고 채웁니다.
CREATE OR REPLACE TABLE padding_example (v VARCHAR, b BINARY);
INSERT INTO padding_example (v, b)
SELECT
'Hi',
HEX_ENCODE('Hi');
INSERT INTO padding_example (v, b)
SELECT
'-123.00',
HEX_ENCODE('-123.00');
INSERT INTO padding_example (v, b)
SELECT
'Twelve Dollars',
TO_BINARY(HEX_ENCODE('Twelve Dollars'), 'HEX');
테이블을 쿼리하여 데이터를 표시합니다.
SELECT * FROM padding_example;
+----------------+------------------------------+
| V | B |
|----------------+------------------------------|
| Hi | 4869 |
| -123.00 | 2D3132332E3030 |
| Twelve Dollars | 5477656C766520446F6C6C617273 |
+----------------+------------------------------+
이 예제는 LPAD 함수를 사용하여 VARCHAR 값을 왼쪽으로 붙여넣는 것을 보여 주며, 결과는 10문자로 제한됩니다.
SELECT v,
LPAD(v, 10, ' ') AS pad_with_blank,
LPAD(v, 10, '$') AS pad_with_dollar_sign
FROM padding_example
ORDER BY v;
+----------------+----------------+----------------------+
| V | PAD_WITH_BLANK | PAD_WITH_DOLLAR_SIGN |
|----------------+----------------+----------------------|
| -123.00 | -123.00 | $$$-123.00 |
| Hi | Hi | $$$$$$$$Hi |
| Twelve Dollars | Twelve Dol | Twelve Dol |
+----------------+----------------+----------------------+
이 예제는 LPAD 함수를 사용하여 BINARY 값을 왼쪽으로 붙여넣는 것을 보여 주며, 결과는 10바이트로 제한됩니다.
SELECT b,
LPAD(b, 10, TO_BINARY(HEX_ENCODE(' '))) AS pad_with_blank,
LPAD(b, 10, TO_BINARY(HEX_ENCODE('$'))) AS pad_with_dollar_sign
FROM padding_example
ORDER BY b;
+------------------------------+----------------------+----------------------+
| B | PAD_WITH_BLANK | PAD_WITH_DOLLAR_SIGN |
|------------------------------+----------------------+----------------------|
| 2D3132332E3030 | 2020202D3132332E3030 | 2424242D3132332E3030 |
| 4869 | 20202020202020204869 | 24242424242424244869 |
| 5477656C766520446F6C6C617273 | 5477656C766520446F6C | 5477656C766520446F6C |
+------------------------------+----------------------+----------------------+
이 예제는 여러 문자를 사용하는 경우와 패딩에 사용된 여러 문자 문자열 길이의 짝수 배수가 아닌 경우 왼쪽 패딩을 보여줍니다.
SELECT LPAD('123.50', 19, '*_');
+--------------------------+
| LPAD('123.50', 19, '*_') |
|--------------------------|
| *_*_*_*_*_*_*123.50 |
+--------------------------+
출력 결과 19개의 문자가 반환되었으며 마지막 *
문자에는 _
문자가 포함되어 있지 않습니다.