우선, UDF 경로로 이동하여 바퀴를 다시 만들지 않는 것이 좋습니다. 그러나,이 일회성 활동 같은 소리 주어진, 당신은 다음을 사용할 수
이
declare @output table (parentKey int, value int)
declare @values table (idx int identity(1, 1), parentKey int, value varchar(255))
-- Modify the below query to capture the data from your table
insert into @values (parentKey, value) values(1, '1;;2;;4'),(2, '1'),(3, '3;;4'),(4, '1;;2;;3;;4')
declare @i int
declare @cnt int
select @i = MIN(idx) - 1, @cnt = MAX(idx) from @values
while(@i < @cnt)
begin
select @i = @i + 1
declare @value varchar(255)
declare @key int
select @value = value, @key = parentKey from @values where idx = @i
declare @idx int
declare @next int
select @idx = 1
while(@idx <= LEN(@value))
begin
select @next = CHARINDEX(';;', @value, @idx)
if(@next > @idx)
begin
insert into @output (parentKey, value) values(@key, SUBSTRING(@value, @idx, @next - @idx))
select @idx = @next + 2
end
else
begin
insert into @output (parentKey, value) values(@key, SUBSTRING(@value, @idx, LEN(@value) - @idx + 1))
select @idx = LEN(@value) + 1
end
end
end
select * from @output
@output
테이블 변수는 이제 당신이 찾고있는 매핑이 포함되어 있습니다. 끝에서 목적지까지 복사하거나 쿼리에서 @output
을 제거하고 동등한 삽입을 관계 테이블로 직접 대체 할 수 있습니다.
그리고 가능한 한 데이터베이스 디자인을 수정하십시오. 테이블에 어떤 것도 목록으로 저장해서는 안됩니다. 필요한 경우 관련 테이블이 필요합니다. – HLGEM
그게 내가하고있는 과정입니다. 다음은 관계 테이블로 만들 수있는 4 개의 열을 제거하는 것입니다. Station 1-4 ... – Gage