본문 바로가기
DataBase/MSSQL

[MSSQL] 문자열 원하는 영역 자르기 (SUBSTRING, LEFT, RIGHT)

by 코딩이라구 2023. 6. 29.

MSSQL 데이터베이스의 검색 방법에서 문자열을 원하는 길이(영역)의 문자열만큼 잘라서 조회해야 할 경우가 있습니다. 이번에는 MSSQL에서 문자열 자르기의 3가지 종류인 SUBSTRING, LEFT, RIGHT 함수에 대하여 알아보도록 하겠습니다.


MSSQL 문자열 자르기 4가지 함수

 

1. SUBSTRING

  • SUBSTRING 함수는 기존 문자열을 받아서 지정한 영역만큼 자른 후 자른 문자열만 리턴합니다. 주로 시작위치를 정하고 가져올 문자열의 길이를 지정하여 원하는 영역만을 가져올 수 있습니다. 또한 WHERE문의 조건절로도 사용이 가능합니다.
  • 예를 들어, 날짜를 년/월/일로 구분하여 문자열을 받아오는 방법 및 전화번호의 중간 또는 끝자리만을 받아올 수 있는 등 여러 가지 방면으로 활용 가능성이 높습니다.
  • 기본 문법 - SUBSTRING( '기존 문자열', '시작위치', '가져올 문자열의 길이')
  • 주의해야 할 점으로 시작위치는 기본적으로 0이 아닌 1부터 시작입니다.

 

>> 예제 (SELECT문 조회 칼럼)

-- 날짜의 년/월/일을 구분하여 자르는 방법
SELECT SUBSTRING('2023-06-29', 1, 4) AS Year
      ,SUBSTRING('2023-06-29', 6, 2) AS Month
      ,SUBSTRING('2023-06-29', 9, 2) AS Day
      ,SUBSTRING('2023-06-29', 0, 1) AS Temp;

-- 결과값
Year  = 2023
Month = 06
Day   = 29
Temp  = '' (빈값 - 1부터 시작을 해야지 정상적인 길이만큼 가져올 수 있습니다.)
-- 전화번호의 중간/끝자리를 구분하여 자르는 방법
SELECT SUBSTRING('010-0000-0001', 5, 4) AS MidNo
      ,SUBSTRING('010-0000-0001', 10, 4) AS EndNo
      ,SUBSTRING('01000000001', 1, 3) + '-' + SUBSTRING('01000000001', 4, 4) 
      + '-' + SUBSTRING('01000000001', 9, 4) AS Hp;

-- 결과값
MidNo = 0000
EndNo = 0001
Hp    = 010-0000-0001

 

>> 예제 (WHERE문 조건절)

-- 조건 > 6월달에 등록한 회원 
-- (등록날짜형식 '2023-06-01')
SELECT member
  FROM gym
 WHERE SUBSTRING(regist_date, 6, 2) = '06';

2. LEFT

  • LEFT 함수는 기존 문자열을 받아서 왼쪽부터 지정한 길이만큼 자른 후 자른 문자열을 리턴합니다. WHERE문의 조건절로도 사용이 가능합니다.
  • 기본 문법 - LEFT( '기존 문자열', '가져올 문자의 길이')

 

>> 예제 (SELECT문 조회 칼럼)

-- 이름에서 성만 구분하여 자르는 방법
SELECT LEFT('김경식', 1) AS Name1,
      ,LEFT('홍승익', 1) AS Name2;

-- 결과값
Name1 = 김
Name2 = 홍
-- 각각의 길이만큼 왼쪽부터 자르는 방법
SELECT LEFT('가나다라마바사', 1)
      ,LEFT('가나다라마바사', 2)
      ,LEFT('가나다라마바사', 4)
      ,LEFT('가나다라마바사', 6);

-- 결과값
1 = 가
2 = 가나
4 = 가나다라
6 = 가나다라마바

 

>> 예제 (WHERE문 조건절)

-- 이름이 '김'으로 시작하는 회원
SELECT member
  FROM gym
 WHERE LEFT(name, 1) = '김';

3. RIGHT

  • RIGHT 함수는 기존 문자열을 받아서 오른쪽부터 지정한 길이만큼 자른 후 자른 문자열을 리턴합니다. LEFT와 마찬가지로 WHERE문의 조건절에서 사용이 가능합니다.
  • 기본 문법 - RIGHT( '기존 문자열', '가져올 문자열의 길이' )


>> 예제 (SELECT문 조회 칼럼)

-- 이름에서 성을 뺀 나머지 이름만 자르는 방법
SELECT RIGHT('김천호', 2) AS Name1
      ,RIGHT('전지은', 2) AS Name2;

-- 결과값
Name1 = 천호
Name2 = 지은
-- 각각의 길이만큼 오른쪽부터 자르는 방법
SELECT RIGHT('abcdefg', 1)
      ,RIGHT('abcdefg', 2)
      ,RIGHT('abcdefg', 4)
      ,RIGHT('abcdefg', 6);

--결과값
1 = g
2 = fg
4 = defg
6 = bcdefg

 

>> 예제 (WHERE문 조건절)

-- 전화번호 끝자리가 0629인 회원
SELECT member
  FROM gym
 WHERE RIGHT(hp, 4) = '0629';

이번에는 MSSQL에서 자신이 원하는 길이만큼 문자열을 자르는 방법에 대하여 알아보았습니다. 3가지 함수 모두 많이 사용하는 함수이지만, 상황에 맞게 활용할 수 있는 함수이며, SUBSTRING은 시작위치의 제한이 없다는 점에서 많이 사용하며, LEFT와 RIGHT함수는 간편하게 원하는 문자열을 받을 수 있는 장점이 있습니다.

 

 


 

MSSQL TOP 사용법 (행의 수를 지정하여 출력)

이번에는 MSSQL에서 SELECT 문 사용 시 테이블의 레코드를 조회할 때 원하는 행의 수만큼 지정하여 화면에 출력하기 위한 구문에 대하여 알아보도록 하겠습니다. MySQL에서는 LIMIT 구문으로 사용되는

chragu.com

댓글