- 카테고리:
문자열 및 이진 함수 (일반)
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 함수를 사용하여 왼쪽의 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개의 문자가 반환되었으며 마지막 *
문자에는 _
문자가 포함되어 있지 않습니다.