개발 창고/Database

[MSSQL] 특정 문자열의 개수 추출

로이제로 2022. 4. 7. 14:31
반응형

Query를 작성하다 보면 해당 칼럼에서 특정 문자열의 개수를 추출하는 경우가 발생합니다. 이는 그 문자열의 개수가 중요하다기보다, 해당 문자열의 개수를 가지고 해당 칼럼에 등록된 항목의 수가 몇 개인지 확인할 때 주로 사용됩니다.

 

LEN(원문) : 원문의 글자 수 반환

REPLCAE(원문, 대상문자, 변경 문자) : 원문에서 대상 문자를 찾아 변경 문자로 바꿔줌

 

SELECT V.TEXT	원문
	 , LEN(V.TEXT)	"문자열 개수"
	 , LEN(V.TEXT) - LEN(REPLACE(V.TEXT, '/', ''))		"슬래시(/) 문자열 개수"
	 , LEN(V.TEXT) - LEN(REPLACE(V.TEXT, '/', '')) + 1	"항목 수"
  FROM (
        SELECT '바나나/사과/배/딸기' AS TEXT
        UNION ALL
        SELECT '블루베리/파인애플/망고' AS TEXT
       ) V

 

아이디어는 단순합니다.

"전체 글자 수에서 찾으려는 글자 수를 뺀 전체 글자 수를 빼면 결국 찾으려는 글자 수를 찾아낸다."

라는 개념입니다.

 

찾는 단어수 = (전체 글자 수) - (찾는 단어를 뺀 나머지 글자 수)

 

 3 번째 항목을 보시면, 전체 글자수글자 수 LEN(V.TEXT)에서 찾는 단어를 뺀 나머지 글자 수 LEN(REPLACE(V.TEXT, '/', ''))로 찾는 단어의 수를 찾아냈음을 확인할 수 있습니다.

 

 여기에서 찾는 단어 수 + 1을 하면, 구분자(/)로 나눠진 각 항목의 수를 찾아 낼 수 있었음을 유추할 수 있습니다.

반응형