- 카테고리:
문자열 및 이진 함수 (일치/비교)
RIGHT¶
입력값의 맨 오른쪽 하위 문자열을 반환합니다.
RIGHT(STR, N)
은 SUBSTR(STR, LENGTH(STR)-N+1, N)
과 동등합니다.
- 참고 항목:
구문¶
RIGHT( <string_expr> , <length_expr> )
인자¶
string_expr
VARCHAR 또는 BINARY 값으로 평가되는 식입니다.
length_expr
정수로 평가되는 식입니다. 이 식에서 지정하는 사항은 다음과 같습니다.
입력이 VARCHAR 값인 경우 반환할 UTF-8 문자 수입니다.
입력이 BINARY 값인 경우 반환할 바이트 수입니다.
0보다 크거나 같은 길이를 지정합니다. 길이가 음수이면 함수는 빈 문자열을 반환합니다.
반환¶
반환된 값의 데이터 타입은 string_expr
(VARCHAR 또는 BINARY)의 데이터 타입과 동일합니다.
입력 중 하나라도 NULL인 경우, NULL이 반환됩니다.
사용법 노트¶
length_expr
이 expr
의 길이보다 큰 경우, 함수는 expr
을 반환합니다.
데이터 정렬 세부 정보¶
데이터 정렬은 VARCHAR 입력에 적용됩니다. 첫 번째 매개 변수의 입력 데이터 타입이 BINARY인 경우 데이터 정렬이 적용되지 않습니다.
No impact. 데이터 정렬이 구문적으로 허용되지만, 데이터 정렬은 처리에 영향을 주지 않습니다. 예를 들어, 언어에서 2자 및 3자로 구성된 문자(예: 헝가리어의 “dzs”, 체코어의 “ch”)라도 여전히 길이 인자에 대해 2개 또는 3개의 문자(한 문자가 아님)로 계산됩니다.
The collation of the result is the same as the collation of the input. 이는 반환된 값이 중첩 함수 호출의 일부로서 다른 함수에 전달되는 경우에 유용할 수 있습니다.
예¶
다음 예제에서는 RIGHT 함수를 사용합니다.
기본 예제¶
SELECT RIGHT('ABCDEFG', 3);
+---------------------+
| RIGHT('ABCDEFG', 3) |
|---------------------|
| EFG |
+---------------------+
이메일, 전화번호 및 날짜 문자열의 하위 문자열 반환하기¶
다음 예에서는 테이블의 고객 정보에 대한 하위 문자열을 반환합니다.
테이블을 만들고 데이터를 삽입합니다.
CREATE OR REPLACE TABLE customer_contact_example (
cust_id INT,
cust_email VARCHAR,
cust_phone VARCHAR,
activation_date VARCHAR)
AS SELECT
column1,
column2,
column3,
column4
FROM
VALUES
(1, 'some_text@example.com', '800-555-0100', '20210320'),
(2, 'some_other_text@example.org', '800-555-0101', '20240509'),
(3, 'some_different_text@example.net', '800-555-0102', '20191017');
SELECT * from customer_contact_example;
+---------+---------------------------------+--------------+-----------------+
| CUST_ID | CUST_EMAIL | CUST_PHONE | ACTIVATION_DATE |
|---------+---------------------------------+--------------+-----------------|
| 1 | some_text@example.com | 800-555-0100 | 20210320 |
| 2 | some_other_text@example.org | 800-555-0101 | 20240509 |
| 3 | some_different_text@example.net | 800-555-0102 | 20191017 |
+---------+---------------------------------+--------------+-----------------+
LENGTH 및 POSITION 함수와 RIGHT 함수를 함께 사용하여 이메일 주소에서 도메인을 추출합니다. 이 예에서는 먼저 입력 문자열의 길이를 찾은 다음 각 문자열에서 @
의 위치를 빼서 도메인의 길이를 구합니다.
SELECT cust_id,
cust_email,
RIGHT(cust_email, LENGTH(cust_email) - (POSITION('@' IN cust_email))) AS domain
FROM customer_contact_example;
+---------+---------------------------------+-------------+
| CUST_ID | CUST_EMAIL | DOMAIN |
|---------+---------------------------------+-------------|
| 1 | some_text@example.com | example.com |
| 2 | some_other_text@example.org | example.org |
| 3 | some_different_text@example.net | example.net |
+---------+---------------------------------+-------------+
팁
POSITION 함수를 사용하면 빈 문자(' '
)나 밑줄(_
)과 같은 다른 문자의 위치를 찾을 수 있습니다.
테이블의 cust_phone
열에서는 항상 처음 세 문자가 지역 번호입니다. 지역 번호를 제외한 전화 번호를 추출합니다.
SELECT cust_id,
cust_phone,
RIGHT(cust_phone, 8) AS phone_without_area_code
FROM customer_contact_example;
+---------+--------------+-------------------------+
| CUST_ID | CUST_PHONE | PHONE_WITHOUT_AREA_CODE |
|---------+--------------+-------------------------|
| 1 | 800-555-0100 | 555-0100 |
| 2 | 800-555-0101 | 555-0101 |
| 3 | 800-555-0102 | 555-0102 |
+---------+--------------+-------------------------+
테이블의 activation_date
열에서 날짜는 항상 YYYYMMDD
형식으로 되어 있습니다. 다음 문자열에서 날짜를 추출합니다.
SELECT cust_id,
activation_date,
RIGHT(activation_date, 2) AS day
FROM customer_contact_example;
+---------+-----------------+-----+
| CUST_ID | ACTIVATION_DATE | DAY |
|---------+-----------------+-----|
| 1 | 20210320 | 20 |
| 2 | 20240509 | 09 |
| 3 | 20191017 | 17 |
+---------+-----------------+-----+