2017-10-17 1 views
0

배열에서 데이터를 가져 오는 insert 문을 쓰려고합니다.SQL 배열 삽입

두 변수가 있습니다. 하나는 BusinessID이고 다른 하나는 BusinessType입니다. 비즈니스는 여러 유형을 가질 수 있습니다. 예를 들어 BusinessType = (1,2,3,4,5)이지만 BusinessID는 단일 번호 만 허용됩니다. BusinessID = 1

mssql에서 다음과 같은 기능을 수행 할 수 있습니까?

for BusinessType in BusinessType 
    insert into Business 
    Values(BusinessID,BusinessType) 

이 이상적으로 나에게 결과

BusinessID BusinessType 
    1   1 
    1   2 
    1   3 
    1   4 
    1   5 
+2

는 일반적으로는'INSERT' 문 일련 그 쉼표로 구분 된 목록을 번역하는 응용 계층의 책임입니다. – tadman

+0

"BusinessType"의 SQL 데이터 유형은 무엇입니까? – Dai

+0

현재 BusinessType은 int이지만 필요한 경우 다른 것이 될 수 있습니다. – jol1234

답변

1

하지 2,016 만일을 줄 것이다, 여기에 결과에 만족하는 경우 귀하의 문자열을

주석 삽입 라인을 분할 인라인 접근 방식입니다.

Declare @BusinessID int = 1 
Declare @Type varchar(max) = '1,2,3,4,5' -- notice no()'s 

--Insert Into Business (BusinessID,BusinessType) 
Select BusinessID = @BusinessID 
     ,BusinessType = B.i.value('(./text())[1]', 'int') 
From (Select x = Cast('<x>' + replace(@Type,',','</x><x>')+'</x>' as xml).query('.')) as A 
Cross Apply x.nodes('x') AS B(i) 

반환

BusinessID BusinessType 
1   1 
1   2 
1   3 
1   4 
1   5