Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

SQL SUBSTR() 함수 완벽 가이드 – 문자열 일부 추출 방법

데이터를 다루다 보면 문자열 값 전체가 아니라 일부만 추출해서 표시해야 하는 경우가 종종 있습니다. 이럴 때 유용하게 사용되는 문자열 함수가 바로 SUBSTR()입니다. 동일한 기능을 제공하는 SUBSTRING() 함수도 있으며, 이 글에서는 SQL에서 substring 함수를 활용하는 다양한 방법을 예제와 함께 살펴보겠습니다.

사전 준비

이 글에서 사용한 SQL Fiddle의 스키마는 다음과 같습니다.

create table names (
   id INT,
   name VARCHAR(50),
   age INT,
   gender VARCHAR(50)
);
insert into names (id, name, age, gender) values (1, 'Bret Starkings', 55, 'M');
insert into names (id, name, age, gender) values (2, 'Bobbye Eyckel', 76, 'F');
insert into names (id, name, age, gender) values (3, 'Barbie Veschi', 50, 'F');
insert into names (id, name, age, gender) values (4, 'Electra Blazewicz', 47, 'F');

SUBSTR() 함수를 사용하면 name 컬럼에서 원하는 부분만 가져올 수 있습니다. 함수의 기본 문법은 다음과 같습니다.

SUBSTR(column_name, position, num_letters);

이 함수는 세 가지 매개변수를 받습니다. 첫 번째는 부분 문자열을 추출할 대상 컬럼 또는 문자열, 두 번째는 1부터 시작하는 시작 위치(0이 아닌 1부터 인덱싱), 세 번째는 추출할 문자 수입니다. name 컬럼에 적용하면 SQL문은 다음과 같이 작성됩니다.

SELECT name, SUBSTR(name, 1, 4) AS NAME_SUBSTRING, age, gender
FROM names;

실행 결과는 다음과 같습니다.

nameNAME_SUBSTRINGagegender
Bret StarkingsBret55M
Bobbye EyckelBobb76F
Barbie VeschiBarb50F
Electra BlazewiczElec47F
Estrella BorleaceEstr57F

세 번째 매개변수(추출할 문자 수)는 필요에 따라 생략할 수 있습니다. 생략하면 지정한 시작 위치부터 문자열 끝까지 전체가 반환됩니다.

SELECT name, SUBSTR(name, 4) AS NAME_SUBSTRING, age, gender
FROM names;
nameNAME_SUBSTRINGagegender
Bret Starkingst Starkings55M
Bobbye Eyckelbye Eyckel76F
Barbie Veschibie Veschi50F
Electra Blazewiczctra Blazewicz47F
Estrella Borleacerella Borleace57F

부트캠프 참가자의 81%가 참여 후 IT 분야 취업 전망에 대한 자신감이 높아졌다고 답했습니다. 자신에게 맞는 부트캠프를 찾아 커리어 전환을 시작해 보세요.

부트캠프 수료생은 평균적으로 부트캠프를 시작하고 첫 직장을 찾기까지 6개월 미만의 짧은 기간 안에 커리어 전환을 완료했습니다.

또한 위치 값에 음수를 사용할 수도 있습니다. 음수를 지정하면 문자열 끝에서부터 역방향으로 계산하여, 해당 위치부터 문자열 끝까지의 내용을 반환합니다.

SELECT name, SUBSTR(name, -4) AS NAME_SUBSTRING, age, gender
FROM names;
nameNAME_SUBSTRINGagegender
Bret Starkingsings55M
Bobbye Eyckelckel76F
Barbie Veschischi50F
Electra Blazewiczwicz47F
Estrella Borleaceeace57F

다른 SQL 함수와 마찬가지로, 사용하는 데이터베이스 종류(MySQL, Oracle, PostgreSQL 등)에 따라 문법이 조금씩 다를 수 있습니다. 하지만 기본적인 개념은 모두 동일합니다. 위치 매개변수의 인덱스가 0이 아니라 1부터 시작한다는 점만 기억하면, 원하는 문자열을 손쉽게 추출하는 쿼리를 작성할 수 있습니다.