2017년 10월 18일 수요일

DB에서 구분자가 들어간 파라메터를 한줄로 출력

업무를 하다 보니...

DB 프로시저 등에 파라메터를 여러개 전달해서

구분자로 분해해서 쿼리의 IN 문장에 쓰고 싶은 경우가 많은데..

정작 찾아보니... 없다!!

split 구현한것들은 내가 원하는 형태가 안 나오길래.. 직접 구현..

목표는 '5040:5050:5060:' --->'5040','5050','5060' 요 딴식이다!!

이하 mssql 스칼라 함수!!

(
P.S. 기껏 만들어 놨더니.. 생각대로 안됨... 내가 상상한 사용법으로 안됨..

https://stackoverflow.com/questions/2944511/sql-server-in-clause-with-a-declared-variable

위의 링크대로 해야 함..
)


  1. SET ANSI_NULLS ON
  2. GO
  3. SET QUOTED_IDENTIFIER ON
  4. GO
  5. -- =============================================
  6. -- Author:     
  7. -- Create date: <2017-10-18>
  8. -- Description: <특정구분자로 결합된 문자 집합을 IN에 사용할 수 있는 형식으로 변경 반환 '5040:5050:5060:' --->'5040','5050','5060' >
  9. -- 구분자 마지막까지 붙일것!!!
  10. -- SELECT dbo.UFN_CONVERT_PARAMS('5040:5050:5060:',':')
  11. -- =============================================
  12. ALTER FUNCTION dbo.UFN_CONVERT_PARAMS(
  13.     @PARAMS VARCHAR(5000),
  14.     @TOKKEN VARCHAR(10)
  15. )
  16. RETURNS VARCHAR(5000)
  17. AS
  18. BEGIN
  19.     DECLARE @RTN    VARCHAR(5000)
  20.     DECLARE @TMP_CNT    INT
  21.     DECLARE @loop INT
  22.     SET @TMP_CNT = LEN(@PARAMS)-LEN(REPLACE(@PARAMS,@TOKKEN,''))    -- 슬래시 갯수 추출
  23.     SET @loop = 0
  24.    
  25.     DECLARE @SPLIT_SP   VARCHAR(500)    --분리한 값 저장
  26.     DECLARE @SPLIT_REMAINS  VARCHAR(500)
  27.     DECLARE @SPLIT_TMP_CD   VARCHAR(5)
  28.     SET @SPLIT_SP = ''
  29.     SET @SPLIT_TMP_CD = ''
  30.     SET @SPLIT_REMAINS = @PARAMS
  31.     WHILE(@loop < @TMP_CNT)
  32.     BEGIN
  33.         SET @SPLIT_TMP_CD = LEFT(@SPLIT_REMAINS,CHARINDEX(@TOKKEN,@SPLIT_REMAINS)-1)
  34.         SET @SPLIT_SP = @SPLIT_SP + '''' + @SPLIT_TMP_CD + '''' + ','
  35.         SET @SPLIT_REMAINS = REPLACE(@SPLIT_REMAINS,LEFT(@SPLIT_REMAINS,CHARINDEX(@TOKKEN,@SPLIT_REMAINS)),'')
  36.         SET @loop = @loop + 1      
  37.     END
  38.     RETURN LEFT(@SPLIT_SP, LEN(@SPLIT_SP) - CHARINDEX(',', reverse(@SPLIT_SP)))
  39. END
  40. GO

댓글 없음:

댓글 쓰기

[낯선] 2026.06.20 이태원 MZK MuzikBar 공연

간만의 공연 이태원 비틀즈가 이전하여 MZK MuzikBar 로 새 단장 오픈을 한 뒤로 2번째 공연 새 베이시스트가 합류한 뒤로 첫 공연이기도 함.. 이래저래 틀린 부분도 많지만.. 그래도 간만에 그럭저럭 잘했다.. https://www.youtub...