나는 잠재적 인 값의 수가 크고 불확실합니다.
경우에 따라서 자신에게 함수를 만들 :
이
CREATE FUNCTION [dbo].[fnSplit](
@sInputList VARCHAR(max) -- List of delimited items
, @sDelimiter VARCHAR(5) -- delimiter that separates items
) RETURNS @List TABLE (item VARCHAR(max))
BEGIN
DECLARE @sItem VARCHAR(max)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT
@sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
@sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
IF LEN(@sItem) > 0
INSERT INTO @List SELECT @sItem
END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END
이제의 라인을 따라 쿼리 쓸 수 있습니다 :이 방법으로
SELECT * FROM myTable WHERE myColumn IN
(SELECT * FROM dbo.fnSplit(stringParamHere, stringSeparatorHere))
를 쿼리 a를 전달할 수 있습니다 주어진 매개 변수와 함께 단일 매개 변수의 x 값 목록.
위의 예는 문자열 값을 구분하는 데 사용됩니다. PostgreSQL를위한
INSERT INTO @List SELECT CAST(@sItem as int)
같은 기능 :에 "... INSERT INTO"단순히 테이블 항목의 유형을 변경하고 라인을 변경하여, INT의 테이블을 반환하는 fnSplitInt을 생산하지만 매우 쉽습니다 다음과 같습니다
CREATE OR REPLACE FUNCTION public.fnsplit(
IN stringlist character varying,
IN delimit character varying)
RETURNS TABLE(items character varying) AS
$BODY$
declare remainderlist character varying;
declare front character varying;
declare delimitpos integer;
begin
drop table if exists tmptbl;
create temp table tmptbl(items character varying);
remainderlist := $1;
delimitpos := strpos(remainderlist, $2);
while delimitpos > 0 loop
front := trim(both from(left(remainderlist, delimitpos -1)));
remainderlist := substr(remainderlist, delimitpos + 1);
if length(front) > 0 then
insert into tmptbl values (front);
end if;
delimitpos := strpos(remainderlist, $2);
end loop;
--insert last value
remainderlist := trim(both from remainderlist);
if length(remainderlist) > 0 then
insert into tmptbl values (remainderlist);
end if;
return query
select * from tmptbl;
return;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
HTH
* TableA에서 선택 * 여기서 Column1 IN (1,2,3)? – Veljko89
샘플 테이블 데이터 및 예상 결과를 추가하십시오! – jarlh
@ Veljko89 매개 변수 (값)의 수는 확인란에서 선택된 항목에 따라 매번 바뀝니다. – ExTincT