반응형
SQL A,B,C 문자열에서 구분자(,)로 나누어 문자비교하기
사용예)
select dbo.FN_StrCustomCmp('cc ', 'abc, bd, cc, dd, ee')
문자열 A,B,C,D,E,F 등의 , 로 구분하여 저장한 필드에서 원하는 문자열을 찾았는지 리턴해줌 (1: true / 0: false)
MSSQL에서 문자열 나누기함수를 이용하여 작성한것입니다.
MS Sql Server - Drop Function If Exists
SQL Function 함수가 존재하는 지 확인하여 존재하면 삭제후 수행한다
1 IF EXISTS (SELECT * FROM sysobjects WHERE name = 'FN_StrCustomCmp' AND type = 'FN')
2 BEGIN
3 DROP FUNCTION FN_StrCustomCmp
4 END
5 GO
SQL Function 함수 만들기
문자열 구분자로 나누어 일치여부를 확인하는 SQL Function 함수를 작성한다.
1 drop function FN_StrCustomCmp
2 ---------------------------------------------------
3 CREATE FUNCTION FN_StrCustomCmp
4 (
5 @strSearch varchar(50) --찾을 문자
6 , @strData varchar(50)) --문자열 데이타
7 RETURNS varchar(1)
8 AS
9 BEGIN
10 -- A,B,C,D 문자열중 넘겨준 문자와 일치하는 값이 있으면 1을 리턴/ 없으면 0리턴
11 Declare @StrTemp varchar(100) --
12 Declare @return varchar(1) --
13 set @return ='0'
14
15 While charindex(',', @strData) <> 0 OR Len(ltrim(rtrim(@strData))) > 0
16 BEGIN
17 -- 문자열에서 , 를 만나면
18 If (charindex(',', @strData) = 0)
19 BEGIN
20 set @StrTemp = ltrim(rtrim(@strData))
21 set @strData = ''
22 END
23 Else
24 BEGIN
25 select @StrTemp = ltrim(rtrim(SubString(@strData, 0, charindex(',', @strData))))
26 Set @strData = ltrim(rtrim(SubString(@strData, CharIndex(',', @strData) + 1, len(@strData))))
27 END
28 --- 같은 문자열을 찾았으면 While 문을 빠져 나온다. (1: 찾음 0: 못찾음)
29 IF (ltrim(rtrim(@strSearch)) = ltrim(rtrim(@StrTemp)))
30 BEGIN
31 set @return = '1' BREAK
32 END
33 ELSE
34 BEGIN
35 set @return = '0'
36 END
37 END
38 RETURN @return
39 END
40 GO
공백제거 및 첫번째 발견시 break하여 리턴하게 되어 있으며
별도의 기능이 필요시 수정하여 사용하세요.