MS-SQL 초성 검색(자음 검색)

About DataBase 2012. 1. 9. 14:02 posted by 무명시인
MS-SQL 에서 초성 검색 할때는 이렇게...       
CREATE FUNCTION [dbo].[UF_RegularExText]
(
	@Value NVARCHAR(50)
)
RETURNS NVARCHAR(2000)
AS 
BEGIN
	DECLARE @Rtn NVARCHAR(2000)
	DECLARE @Temp NVARCHAR(2)
	DECLARE @SerchValue NVARCHAR(20)
	DECLARE @i INT
	DECLARE @n INT
	
	SET @Rtn = ''
	SET @i = 1
	SET @n = LEN(@Value)
	
	WHILE @i <= @n
	BEGIN
		SET @Temp = Substring(@Value, @i, 1)
		
		SET @SerchValue = (CASE @Temp 
							WHEN 'ㄱ' THEN '[가-깋]'
							WHEN 'ㄲ' THEN '[까-낗]'
							WHEN 'ㄴ' THEN '[나-닣]'
							WHEN 'ㄷ' THEN '[다-딯]'
							WHEN 'ㄸ' THEN '[따-띻]'
							WHEN 'ㄹ' THEN '[라-맇]'
							WHEN 'ㅁ' THEN '[마-밓]'
							WHEN 'ㅂ' THEN '[바-빟]'
							WHEN 'ㅃ' THEN '[빠-삫]'
							WHEN 'ㅅ' THEN '[사-싷]'
							WHEN 'ㅆ' THEN '[싸-앃]'
							WHEN 'ㅇ' THEN '[아-잏]'
							WHEN 'ㅈ' THEN '[자-짛]'
							WHEN 'ㅉ' THEN '[짜-찧]'
							WHEN 'ㅊ' THEN '[차-칳]'
							WHEN 'ㅋ' THEN '[카-킿]'
							WHEN 'ㅌ' THEN '[타-팋]'
							WHEN 'ㅍ' THEN '[파-핗]'
							WHEN 'ㅎ' THEN '[하-힣]'
							ELSE @Temp END)
							
		SET @Rtn = RTRIM(@Rtn) + @SerchValue
		
		SET @i = @i + 1
	END
	
	Return @Rtn	
	
	
우선 위 와 같은 함수를 생성 합니다. 

한글의 초성, 엄밀히 말하면 자음을 정규식화 하는것이지요.

그리고 PATINDEX 함수를 사용해서 아래 처럼 WHERE 절을 구성합니다.       
	SELECT * 
	FROM Table 
	WHERE PATINDEX(UF_RegularExText('ㄱ') + '%' , Column) > 0