원본 문자열 내에서 특정 문자에 대한 갯수를 세는 함수를 만들어봤습니다.
CREATE FUNCTION fInStrCount
( @Text NVARCHAR(MAX)
, @InStr NVARCHAR(1)
) RETURNS INT
AS BEGIN
RETURN (Select LEN(@Text) - LEN( REPLACE(@Text, @InStr, '')))
END
GO
-- 테스트!!
SELECT DBO.fInStrCount('ababababbbbbaa','a') AS 'fInStrCount'
아래는 서비스로 만들어봤습니다.
원본 문자열 내에서 특정 문자를 뺀 갯수를 세는 함수입니다.
CREATE FUNCTION fInStrCountRev
( @Text NVARCHAR(MAX)
, @InStr NVARCHAR(1)
) RETURNS INT
AS BEGIN
RETURN ( Select LEN(@Text) - ( LEN(@Text) - LEN( REPLACE(@Text, @InStr, '') ) ) )
END
GO
-- 테스트~!
SELECT DBO.fInStrCountRev('ababababbbbbaa','a') AS 'fInStrCountRev'
- 예전 하우투뱅크에서 'Error' 또는 '헤아림'이란 아이디를 사용했었습니다. 혹시 아시는 분은 아는척좀 ㅠㅠ
Comment 5
-
Light
2013.03.27 13:03
음?? 길이로 나눈다는게 무슨 뜻인지...^^;
제가 초짜라서 그런지 당최 이해가 안되네요.
-
'abcdefab' 라는 문자열에서 'a'라는 문자열이 몇개인지를 세려면
'a'를 ''로 치환한다음 'abcdefab'의 길이에서 치환 후 길이와의 차이를 반환하면 됩니다.
이 경우 2가 되겠고 그럼 'a'가 두개 있다는 뜻이네요.
근데 'ab'가 몇개인지를 세려면??
마찬가지로 하면 4를 반환하게 되는데 'ab'는 두번 있잖아요.
따라서 4를 찾으려는 문자열 'ab'의 길이로 나누어서 2를 반환해야죠. count 함수라면...
-
음... 지금 보니까 @InStr가 NVARCHAR(1)이고 한문자만 찾는 함수였군요 ㅎㅎ
-
Light
2013.03.27 19:35
아항^^; 조언 감사합니닷!
갯수를 세는 함수니까 @InStr의 길이로 나눈 값을 반환해야 하지 않을까요?