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

댓글 없음:

댓글 쓰기

[PS2] 악마성 2개 클리어 일지..

https://www.youtube.com/watch?v=HwFIH--7UkM PS2 버전 악마성 시리즈 전부 클리어.. 순수의 비가는 카메라 구도 조정이 전혀 안되서.. 정말 어려웠는데.. 어둠의 저주는 전작의 여러 부족한 부분을 개선하여.. 쾌적하...