- 카테고리:
문자열 및 이진 함수 (일반)
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
입력 값(BINARY
또는 VARCHAR
)의 데이터 타입과 동일합니다.
사용법 노트¶
base
인자가length_expr
보다 길면base
가length_expr
길이로 잘립니다.pad
인자는 여러 문자/바이트 길이일 수 있습니다.pad
인자는 원하는length_expr
길이에 도달할 때까지 결과에서 반복되어,pad
인자에서 불필요한 문자/바이트를 자릅니다.pad
인자가 비어 있으면 패딩이 삽입되지 않지만, 결과는 여전히length_expr
길이로 잘립니다.base
가 문자열인 경우, 기본pad
문자열 기본값은 ‘ ‘(단일 공백)입니다.base
가 이진 값이면pad
인자를 명시적으로 제공해야 합니다.
데이터 정렬 세부 정보¶
데이터 정렬은 VARCHAR
입력에 적용됩니다. 첫 번째 매개 변수의 입력 데이터 타입이 BINARY
인 경우 데이터 정렬이 적용되지 않습니다.
데이터 정렬이 구문적으로 허용되지만, 데이터 정렬은 처리에 영향을 주지 않습니다. 예를 들어, 2자 및 3자 문자가 있는 언어(예: 헝가리어의 “dzs”, 체코어의 “ch”)는 여전히 길이 인자에 대해 두 개 또는 세 개의 문자(한 문자가 아님)로 계산합니다.
The collation of the result is the same as the collation of the first input. 이는 반환된 값이 중첩 함수 호출의 일부로서 다른 함수에 전달되는 경우에 유용할 수 있습니다.
현재, Snowflake에서는 base
인자와 pad
인자가 서로 다른 데이터 정렬 지정자를 가질 수 있습니다. 그러나 반환된 값에는 데이터 정렬 지정자가 하나만 있기 때문에 개별 데이터 정렬 지정자를 둘 다 유지할 수는 없습니다. Snowflake는 사용자가 pad
문자열과는 데이터 정렬이 다른 base
문자열을 사용하지 않을 것을 권장합니다.
예¶
이 예는 VARCHAR
및 BINARY
데이터의 패딩을 보여줍니다.
테이블을 만들고 채웁니다.
CREATE TABLE demo (v VARCHAR, b BINARY); INSERT INTO demo (v, b) SELECT 'Hi', HEX_ENCODE('Hi'); INSERT INTO demo (v, b) SELECT '-123.00', HEX_ENCODE('-123.00'); INSERT INTO demo (v, b) SELECT 'Twelve Dollars', TO_BINARY(HEX_ENCODE('Twelve Dollars'), 'HEX');
VARCHAR
패딩을 보여줍니다.SELECT v, LPAD(v, 10, ' '), LPAD(v, 10, '$') FROM demo ORDER BY v; +----------------+------------------+------------------+ | V | LPAD(V, 10, ' ') | LPAD(V, 10, '$') | |----------------+------------------+------------------| | -123.00 | -123.00 | $$$-123.00 | | Hi | Hi | $$$$$$$$Hi | | Twelve Dollars | Twelve Dol | Twelve Dol | +----------------+------------------+------------------+
BINARY
패딩을 보여줍니다.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 demo 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 | +--------------------------+