본문 바로가기

프로그램 경험/Database

[SqlServer] 콤마를 기준으로 문자열 자르기

DECLARE @InStr    VARCHAR(500)   

DECLARE @Position    INT    --문자 자를 기준 위치  

DECLARE @GubunPosition   INT    --문자 찾은 위치  

DECLARE @TmpSysId    VARCHAR(20)  --시스템 아이디  

DECLARE @StrColumns    VARCHAR(4000) --가변적 문자열 컬럼   

  

SET @InStr = '''ABC'',''BBB'',''EEE'''

SET @Position = 1  

SET @GubunPosition = 1  

SET @StrColumns = ''  

  

--시스템 아이디가 가변적으로 들어 오기 때문에   

--컬럼 문자열을 만들어 준다.  

WHILE(@GubunPosition > 0)  

BEGIN  

  

 SET @GubunPosition = CHARINDEX(',', @InStr, @Position) --콤마 위치 찾기  

  

 IF @GubunPosition = 0  

 BEGIN  

  --print 'last : ' + right(@InStr, len(@InStr)-@Position+1)  

  SET @TmpSysId = RIGHT(@InStr, len(@InStr)-@Position+1) --콤마가 없는 경우 마지막 까지 자른다.  

 END  

 ELSE  

 BEGIN  

  --print substring(@InStr, @Position, @GubunPosition - @Position)  

  SET @TmpSysId = substring(@InStr, @Position, @GubunPosition - @Position) --콤마까지를 자른다.  

 END  

  

 SET @Position = @GubunPosition + 1   

  

 SET @StrColumns = @StrColumns + ',ISNULL(MAX(CASE WHEN SysID = '+ @TmpSysId + ' THEN CNT END),0) AS ' + REPLACE(@TmpSysId, '''', '') --컬럼 문자열 만들기  

END  

  

print '@StrColumns : '+@StrColumns