티스토리 뷰
SQL SUBSTRING 함수
SUBSTRING() 함수는 문자열에서 특정 위치의 일부를 추출하는 데 사용됩니다.
이 함수는 문자열을 처리하거나 특정 부분을 추출할 때 유용합니다.
기본 문법
SUBSTRING(string, start, length)
-
- string : 추출하려는 원본 문자열입니다.
- start : 추출을 시작할 위치입니다. (1부터 시작, 즉 첫 번째 문자는 1로 계산)
- length : 추출할 문자의 길이입니다. (옵션, 지정하지 않으면 문자열 끝까지 추출)
사용 예문
1. 문자열에서 첫 번째 위치부터 부분 문자열 추출
SELECT SUBSTRING('Hello, world!', 1, 5) AS result;
결과:
Hello
-
- 여기서는 'Hello, world!'라는 문자열에서 1번째 위치부터 시작해 5개의 문자를 추출합니다.
2. 문자열에서 특정 위치부터 끝까지 추출
SELECT SUBSTRING('Hello, world!', 8) AS result;
결과:
world!
-
- start 값이 8이면, 8번째 문자부터 끝까지 추출합니다.
- length 값을 지정하지 않으면 끝까지 추출됩니다.
3. 숫자에서 일부만 추출하기 (숫자를 문자열로 처리)
SELECT SUBSTRING('1234567890', 4, 3) AS result;
결과:
456
-
- 숫자 '1234567890'에서 4번째 문자부터 3개의 문자를 추출하면 '456'이 반환됩니다.
- 숫자도 문자열로 처리하므로, 숫자에서 특정 부분을 추출할 수 있습니다.
4. 테이블에서 SUBSTRING() 함수 사용하기
SELECT email,
SUBSTRING(email, POSITION('@' IN email) + 1) AS domain
FROM customers;
-
- POSITION('@' IN email)은 이메일에서 @의 위치를 찾습니다.
- SUBSTRING(email, POSITION('@' IN email) + 1)은 @ 이후의 도메인 부분을 추출합니다.
Good 사용법
1. 문자열에서 필요한 부분만 추출하기
-
- 예를 들어, 고객의 전화번호에서 국가 코드를 추출하거나, 이메일 도메인만 분리하는 작업에 사용됩니다.
SELECT phone_number,
SUBSTRING(phone_number, 1, 3) AS country_code
FROM contacts;
-
- 전화번호에서 첫 3자리를 추출해 국가 코드만 가져옵니다.
2. 특정 패턴 찾기
-
- 예를 들어, URL에서 도메인 이름을 추출할 수 있습니다.
SELECT url,
SUBSTRING(url, 9, POSITION('.com' IN url) - 9) AS domain
FROM websites;
-
- POSITION('.com' IN url)은 URL에서 .com이 위치한 곳을 찾고, 그 위치를 기준으로 도메인 이름을 추출합니다.
Bad 사용법
1. 잘못된 인덱스 값 사용하기
SELECT SUBSTRING('Hello', 10, 5) AS result;
-
- 문제: start 값이 10이므로 문자열 'Hello'의 범위를 벗어납니다. 결과는 빈 문자열이 반환됩니다.
- 해결: start 값은 문자열의 길이를 벗어나지 않도록 해야 합니다.
2. length 값이 너무 클 경우
SELECT SUBSTRING('Hello', 1, 10) AS result;
-
- 문제: length가 10이지만 'Hello'는 5자이므로, 끝까지 추출됩니다.
- 해결: length 값은 항상 실제 문자열 길이에 맞게 설정하는 것이 좋습니다.
3. start 값에 음수 사용하기
SELECT SUBSTRING('Hello', -3, 2) AS result;
-
- 문제: start 값을 음수로 설정하면 오류가 발생할 수 있습니다.
- 해결: start 값은 항상 1 이상의 양수로 설정해야 합니다.
주의사항 ⭐️
SUBSTRING() 함수 사용 시 몇 가지 주의할 점이 있습니다.
start 값이 잘못되거나 length 값이 너무 클 경우 예기치 않은 결과를 초래할 수 있습니다.
반응형