RPAD
RPAD
RPAD() 함수는 문자열의 오른쪽을 다른 문자열의 문자로 패딩하거나, 바이너리 값의 오른쪽을 다른 바이너리 값의 바이트로 패딩해요.
base 인자는 pad 인자의 문자/바이트로 length_expr 길이만큼 패딩돼요.
본문
문법
RPAD( <base>, <length_expr> [, <pad>] )
반환
반환 값의 데이터 타입은 base 입력 값의 데이터 타입(VARCHAR 또는 BINARY)과 같아요.
사용 메모
base인자가length_expr보다 길면length_expr길이로 잘라 내요.pad인자는 여러 문자/바이트가 될 수 있어요.pad인자는 원하는 길이(length_expr)에 도달할 때까지 결과에서 반복되며,pad인자의 불필요한 문자/바이트는 잘라 내요.pad인자가 비어 있으면 패딩이 삽입되지 않지만, 결과는 여전히length_expr길이로 잘라 내요.base가 문자열이면 기본pad문자열은' '(공백 하나)예요.base가 바이너리 값이면pad인자를 명시적으로 제공해야 해요.
정렬 규칙 세부 사항
- 정렬 규칙(collation)은 VARCHAR 입력에 적용돼요. 첫 번째 인자의 입력 데이터 타입이 BINARY면 정렬 규칙이 적용되지 않아요.
- 영향 없음. 정렬 규칙이 문법적으로 받아들여지지만 정렬 규칙은 처리에 영향을 주지 않아요. 예를 들어 두 문자 또는 세 문자로 된 문자를 가진 언어(헝가리어의 "dzs", 체코어의 "ch")에서도 길이 인자에 대해 그 문자들을 두 개 또는 세 개의 문자(한 문자가 아님)로 계산해요.
- 결과의 정렬 규칙은 입력의 정렬 규칙과 같아요. 이는 반환 값을 중첩 함수 호출의 일부로 다른 함수에 전달할 때 유용할 수 있어요.
- 현재 Snowflake는
base와pad인자가 서로 다른 정렬 규칙 지정을 갖도록 허용해요. 그러나 반환 값에는 정렬 규칙 지정이 하나만 있으므로 개별 정렬 규칙 지정을 둘 다 유지할 수 없어요. Snowflake는base문자열과 다른 정렬 규칙을 가진pad문자열은 사용하지 않는 것을 권장해요.
예제
이 예제들은 RPAD 함수를 사용해 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 |
+----------------+------------------------------+
이 예제는 RPAD 함수를 사용한 VARCHAR 값의 오른쪽 패딩을, 결과를 10자로 제한해 보여줘요.
SELECT v,
RPAD(v, 10, '_') AS pad_with_underscore,
RPAD(v, 10, '$') AS pad_with_dollar_sign
FROM padding_example
ORDER BY v;
+----------------+---------------------+----------------------+
| V | PAD_WITH_UNDERSCORE | PAD_WITH_DOLLAR_SIGN |
|----------------+---------------------+----------------------|
| -123.00 | -123.00___ | -123.00$$$ |
| Hi | Hi________ | Hi$$$$$$$$ |
| Twelve Dollars | Twelve Dol | Twelve Dol |
+----------------+---------------------+----------------------+
이 예제는 RPAD 함수를 사용한 BINARY 값의 오른쪽 패딩을, 결과를 10바이트로 제한해 보여줘요.
SELECT b,
RPAD(b, 10, TO_BINARY(HEX_ENCODE('_'))) AS pad_with_underscore,
RPAD(b, 10, TO_BINARY(HEX_ENCODE('$'))) AS pad_with_dollar_sign
FROM padding_example
ORDER BY b;
+------------------------------+----------------------+----------------------+
| B | PAD_WITH_UNDERSCORE | PAD_WITH_DOLLAR_SIGN |
|------------------------------+----------------------+----------------------|
| 2D3132332E3030 | 2D3132332E30305F5F5F | 2D3132332E3030242424 |
| 4869 | 48695F5F5F5F5F5F5F5F | 48692424242424242424 |
| 5477656C766520446F6C6C617273 | 5477656C766520446F6C | 5477656C766520446F6C |
+------------------------------+----------------------+----------------------+
이 예제는 여러 문자를 사용할 때와 패딩이 다중 문자 문자열 길이의 정확한 배수가 아닐 때의 오른쪽 패딩을 보여줘요.
SELECT RPAD('123.50', 19, '*_');
+--------------------------+
| RPAD('123.50', 19, '*_') |
|--------------------------|
| 123.50*_*_*_*_*_*_* |
+--------------------------+
출력은 19자가 반환되었고 마지막 * 문자에 함께할 _ 문자가 없음을 보여줘요.