2011-01-12 31 views
1

我在ms-sql中工作,以下是我想要在僞代碼中執行的操作:如何在不知道子串長度的情況下插入較大字符串的子串?

假設我有一個水果池,並且這些水果中的每一個都與一個靜態數字代碼相關聯,果實有相同的代碼:

apples = 11 
bananas = 27 
grapes = 34 
pears = 10 
watermelon = 8 
figs = 34 

而且我有一系列的項目用逗號分隔的,像這樣一個動態生成的字符串:

StringA: apples, bananas, grapes, pears 

我想要做什麼,是解析字符串中的每個項目,並將其插入到單獨的項目中在表格中排成行,水果進入水果欄,代碼進入代碼欄。

如果我只知道看看StringA,無論是葡萄還是無花果已經找到,有沒有一種方法可以使用substring函數或類似的函數來獲取我的insert語句的那部分字符串,不管它的長度如何?

我希望這是有道理的。

我想要做的是在我的insert語句中使用類似substring(@stringA, starting point of the found substring, the next coma delimiter or if there is none the end of the string)的東西。

+0

搜索,以便爲像「SQL字符串逗號表」 – 2011-01-12 00:12:52

回答

1

不是真的,子字符串的定義必須包含您需要的字符數以及起點。

不過是你想實現的東西像什麼:

select 
'Apples' Name, 1 Value into #Fruit 
union 
select 
'Pears' Name, 2 Value 
union 
select 'Oranges' Name, 3 Value 


select 'Apples, Oranges' as Value into #Value 
union 
select 'Apples, Figs' 
union 
select 'Oranges, Figs' 
union 
select 'Pears, Oranges' 

select * from 
#Value 
left join 
#Fruit on charindex(#Fruit.Name,#Value.Value) >0 
相關問題