본문 바로가기

프로그래밍/MSSQL

[MSSQL] 문자열을 뒤에서 부터 구분자로 잘라보자 (RIGHT, REVERSE, CHARINDEX, PATHINDEX)

반응형

 

 

 

문자열 자르기 함수

 

 

 

RIGHT

 

SELECT RIGHT(문자열, 길이)

 

문자열을 오른쪽에서부터 길이만큼 출력한다.

 

SELECT RIGHT('안녕하세요', 3) -- 하세요

 

 

 

REVERSE

 

SELECT REVERSE(문자열)

 

문자열을 거꾸로 출력한다.

 

SELECT REVERSE('안녕하세요') -- 요세하녕안

 

 

 
 

CHARINDEX

 
SELECT CHARINDEX(검색할문자, 문자열, [시작위치])

 

문자열에서 특정 문자의 위치를 검색한다.

 

SELECT CHARINDEX('안', '안녕하세요안녕하세요') -- 결과 : 1
 
SELECT CHARINDEX('안', '안녕하세요안녕하세요', 2) -- 결과 : 6
-- 시작점이 첫번째 '안' 뒤에서 부터이기 때문에, 그 이후의 '안'의 위치가 출력

 

 

 

PATHINDEX

 

SELECT PATHINDEX('%검색할문자%', 문자열)

 

특정 문자를 찾는 CHARINDEX로 와 달리 PATHINDEX는 패턴을 설정하여 검색한다.

 

SELECT PATINDEX ('%[0-9]%', '손꽁쥐27살')
SELECT PATINDEX ('%꽁%', '손꽁쥐27살')

 

결과 데이터

 

 

 

예제

특정 구분자를 기준으로 문자열을 잘라보자

단, 문자열에서 구분자를 찾을 때 그 기준은 뒤에서부터이다.

 

'D:\TEST\GO\테스트_문서.txt' 라는 문자열이 존재한다.

이때, 내가 필요한 문자열은 '테스트_문서.txt'이다.

 

따라서 문자열을 구분자 \를 기준으로 자르되, 가장 뒤에 해당하는 문자를 가져와야한다.

즉, 문자열을 뒤에서부터 잘라야한다.

 

RIGHT, REVERSE, CHARINDEX 함수를 이용해서 다음과 같은 쿼리를 작성하면, 원하는 결과를 얻을 수 있다.

 

DECLARE @Str VARCHAR(100) = 'D:\TEST\GO\테스트_문서.txt'
SELECT RIGHT(@Str, CHARINDEX('\', REVERSE(@Str))-1)

 

결과 데이터

 

 

반응형