카테고리:

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

LPAD

다른 문자열의 문자로 문자열을 왼쪽에 채우거나 다른 이진 값의 바이트로 이진 값을 왼쪽에 채웁니다.

인자(base)는 length_expr 인자의 문자/바이트와 함께 pad 길이로 왼쪽에 채워집니다.

참고 항목:

RPAD

구문

LPAD( <base>, <length_expr> [, <pad>] )
Copy

인자

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');
Copy

테이블을 쿼리하여 데이터를 표시합니다.

SELECT * FROM padding_example;
Copy
+----------------+------------------------------+
| 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;
Copy
+----------------+----------------+----------------------+
| 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;
Copy
+------------------------------+----------------------+----------------------+
| B                            | PAD_WITH_BLANK       | PAD_WITH_DOLLAR_SIGN |
|------------------------------+----------------------+----------------------|
| 2D3132332E3030               | 2020202D3132332E3030 | 2424242D3132332E3030 |
| 4869                         | 20202020202020204869 | 24242424242424244869 |
| 5477656C766520446F6C6C617273 | 5477656C766520446F6C | 5477656C766520446F6C |
+------------------------------+----------------------+----------------------+

이 예제는 여러 문자를 사용하는 경우와 패딩에 사용된 여러 문자 문자열 길이의 짝수 배수가 아닌 경우 왼쪽 패딩을 보여줍니다.

SELECT LPAD('123.50', 19, '*_');
Copy
+--------------------------+
| LPAD('123.50', 19, '*_') |
|--------------------------|
| *_*_*_*_*_*_*123.50      |
+--------------------------+

출력 결과 19개의 문자가 반환되었으며 마지막 * 문자에는 _ 문자가 포함되어 있지 않습니다.