2016-04-04 54 views
0

我正在通過以下參數來我的存儲過程 -分隔參數拆分逗號被傳遞到存儲過程在SQL Server 2008 R2

@AddOns = 23:2,33:1,13:5 

我需要以此來分裂由逗號字符串 -

SET @Addons = @Addons + ',' 
set @pos = 0 
set @len - 0 

While CHARINDEX(',', @Addons, @pos+1)>0 
Begin 
    SET @len = CHARINDEX(','), @Addons, @pos+1) - @pos 
    SET @value = SUBSTRING(@Addons, @pos, @len) 

所以現在@value = 23:2我需要得到23這是我的ID和2這是我的數量。這裏是我的代碼的其餘部分 -

INSERT INTO TABLE(ID, Qty) 
VALUES(@ID, @QTY) 

set @pos = CHARINDEX(',', @Addons, @[email protected]) + 1 
END 

那麼,什麼是讓在不同的領域對我們的INSERT聲明的23和2的值的最佳方式?

回答

-1
+0

難道沒有一種簡單的方法來獲得23在一個變量和2在另一個變量?有點像分裂,所以SET @Result = Split(request(@value),「:」),然後@Result(0)等於23,@Result(1)等於2 – Dwight

+0

你建議結果存儲在看起來像一個數組。我不認爲這是可能的;至少不在SQL Server中。如果是這樣,我很確定谷歌搜索會找到你想要的。 – nscheaffer

+0

我想你是對的。這不能以我想要的方式在SQL中完成。 – Dwight

-1

我要再次嘗試在這個由@ gofr1對這個問題給出了答案啓發...

How to insert bulk of column data to temp table?

這個回答說明瞭如何使用XML變量和nodes method分裂用逗號分隔數據並將其插入表中的各個列中。在我看來,這與你在這裏嘗試做的事很相似。

看看這個SQL。它當然不是簡單的,只是具有「分割」功能,但它似乎比根據冒號位置切斷字符串更好。

Noel

+0

我想知道爲什麼這是downvoted。任何人? – nscheaffer

相關問題