공부/DB

[MS-SQL] 문자열 함수 - 컬럼의 특정글자 갯수를 리턴하는 함수

왕돌 2015. 4. 21. 15:40

다른분의 블로그에서 퍼다가 썼던건데 출처가 기억이안난다.


USE DB명

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE FUNCTION [dbo].[CharCount]

(

  @P_STR VARCHAR(4000)

 ,@P_PART VARCHAR(200)

)

RETURNS INT

AS

BEGIN

 DECLARE @I INT;

 DECLARE @J INT;

 DECLARE @K INT;

 IF @P_STR IS NULL OR @P_STR = '' BEGIN

  RETURN 0;

 END

 IF @P_PART IS NULL OR @P_PART = '' BEGIN

  RETURN 0;

 END

 SET @I = 1;

 SET @J = 0;

 SET @K = 0;


 WHILE @I > 0 BEGIN

  IF @I = 1 BEGIN

   SET @I = CHARINDEX(@P_PART,@P_STR,1);

  END ELSE BEGIN

   SET @I = CHARINDEX(@P_PART,@P_STR,@I+1);

  END


  IF @I <> 0 BEGIN

   SET @J = @J + 1;

  END

 END


 RETURN @J;

END


으로 만들어서

USE DB명

SELECT CharCount(column,";") FROM table_a

등등 으로 사용하면된다.


MSSQL에 함수를 만드는건 기존엔 잘 사용하지않았는데 이렇게 SELECT, WHERE문에 사용할수있으면

부족한 함수를 많이 만들어써야겠다~


나같이 통계를 많이뽑아야하는 입장에선 완전 꿀 기능!!!


평소엔 프로시저만들어서 쓰곤했었는데 프로시저는 기존 쿼리에 조건문으로 넣을수없었는데 이건진짜 슈퍼개꿀이다 ㅎㅎ


자주 애용해야겠다!!! ㅎㅎ