티스토리 뷰

 

 

 

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 값이 너무 클 경우 예기치 않은 결과를 초래할 수 있습니다.

 

반응형