본문 바로가기
DataBase/MS-SQL

[MS-SQL] 문자열의 자음(초성) 추출 함수 만들기

by 너울림 2022. 3. 21.

문자열의 자음(초성) 추출 함수 만들기

 

문자열의 자음(초성) 추출 함수 만들기

 


포스팅 개요


실제 문자열 필드에서 자음만 추출하는 함수입니다. 함수 형식으로 한글을 제외한 영문이나 숫자, 특수 문자는 그대로 검색합니다. 자주 사용하지는 않지만 가끔 요청이 들어올 때 생성하는 함수로 없으면 아쉬운 그런 쿼리입니다.


예제 쿼리


예제 쿼리를 복사하여 사용할 데이터베이스에서 실행하면 스칼라 반환 함수가 생성됩니다. 생성 후에는 함수와 인자값을 조합하셔서 사용하시면 됩니다.

  • 예제 쿼리를 등록했으면 [Select dbo.Text_Farsing('가나ABCD다라1234')] 쿼리로 간단 테스트가 가능합니다.
  • 함수로 등록된 문자열에서 오로지 한글만 자음으로 변경되어 표시됩니다.
  • 여러 방식으로 작업해왔지만 이 쿼리가 직관적이어서 수정이 간편했던 경험이 있었습니다.
  • 실제 자음만 남기고 모두 삭제하는 식으로 변경한 적도 있습니다.

-- 한글인 경우, 자음 추출 
-- 한글이 아닌 경우 그대로 출력 
CREATE FUNCTION Text_Farsing(@STR VARCHAR(255)) RETURNS VARCHAR(255)
AS
BEGIN
	DECLARE @I          INT,
	        @J          INT,
	        @TMPSTR     VARCHAR(255),
	        @COL1       VARCHAR(2) 
	        
	SET @I = LEN(@STR) 	
	SET @J = 1 	
	SET @TMPSTR = ''   
	
	WHILE (@J <= @I)
	BEGIN
	    SELECT @COL1 = SUBSTRING(@STR, @J, 1) 
	    
	    SET @TMPSTR = @TMPSTR +   
	        CASE 
	             WHEN @COL1 < 'ㄱ' THEN @COL1
	             WHEN ASCII('ㄱ') <= ASCII(@COL1) AND ASCII(@COL1) <= ASCII('ㅎ') THEN @COL1
	             WHEN @COL1 < '까' THEN 'ㄱ'
	             WHEN @COL1 < '나' THEN 'ㄲ'
	             WHEN @COL1 < '다' THEN 'ㄴ'
	             WHEN @COL1 < '따' THEN 'ㄷ'
	             WHEN @COL1 < '라' THEN 'ㄸ'
	             WHEN @COL1 < '마' THEN 'ㄹ'
	             WHEN @COL1 < '바' THEN 'ㅁ'
	             WHEN @COL1 < '빠' THEN 'ㅂ'
	             WHEN @COL1 < '사' THEN 'ㅃ'
	             WHEN @COL1 < '싸' THEN 'ㅅ'
	             WHEN @COL1 < '아' THEN 'ㅆ'
	             WHEN @COL1 < '자' THEN 'ㅇ'
	             WHEN @COL1 < '짜' THEN 'ㅈ'
	             WHEN @COL1 < '차' THEN 'ㅉ'
	             WHEN @COL1 < '카' THEN 'ㅊ'
	             WHEN @COL1 < '타' THEN 'ㅋ'
	             WHEN @COL1 < '파' THEN 'ㅌ'
	             WHEN @COL1 < '하' THEN 'ㅍ'
	             WHEN @COL1 <= '힣' THEN 'ㅎ'
	             ELSE @COL1
	        END 
	        
	    SET @J = @J + 1
	END 	 
	
	RETURN(@TMPSTR)
END
GO

실행 결과

 

만족스러운 실행결과

댓글