반응형
문자열 파라메타로 in에 값 넣기
아아 귀찮다 했는데 이런 방법이 아래 Function 을 만들어준다.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[CSVToTable] (@InStr VARCHAR(MAX))
RETURNS @TempTab TABLE
(id int not null)
AS
BEGIN
;-- Ensure input ends with comma
SET @InStr = REPLACE(@InStr + ',', ',,', ',')
DECLARE @SP INT
DECLARE @VALUE VARCHAR(1000)
WHILE PATINDEX('%,%', @INSTR ) <> 0
BEGIN
SELECT @SP = PATINDEX('%,%',@INSTR)
SELECT @VALUE = LEFT(@INSTR , @SP - 1)
SELECT @INSTR = STUFF(@INSTR, 1, @SP, '')
INSERT INTO @TempTab(id) VALUES (@VALUE)
END
RETURN
END
GO
그리고 함수를 사용하기만 하면된다.
DECLARE @LIST VARCHAR(200)
SET @LIST = '1,3'
SELECT Id, Descr FROM CSVDemo WHERE Id IN (SELECT * FROM dbo.CSVToTable(@LIST))
반응형
LIST
'DB' 카테고리의 다른 글
프로시져 cursor 상태 확인 (0) | 2024.02.24 |
---|---|
[MSSQL] 컬럼명으로 테이블 찾기 (1) | 2024.02.24 |
[MSSQL] 특정 단어가 포함된 프로시져 확인 (0) | 2024.02.23 |
[MSSQL] 당월의 첫날과 마지막날 구하기 (0) | 2024.02.23 |
[MSSQL] [1주,2주,3주] 주차로 SEQ 생성하기 (0) | 2024.02.23 |