如何在不知道子字符串长度的情况下插入较大字符串的子字符串?

时间:2011-01-12 00:05:44

标签: sql sql-server substring

我正在使用ms-sql,这是我在伪代码中尝试做的事情:

假设我有一个水果池,并且这些水果中的每一个都与静态数字代码相关联,并且一些水果具有相同的代码:

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

我有一个动态生成的字符串,其中包含一系列以逗号分隔的项目,如下所示:

StringA: apples, bananas, grapes, pears

我想要做的是解析字符串中的每个项目,并将其插入表格中的单独行,水果进入水果列,代码进入代码列。

如果我只知道看了StringA,无论是葡萄还是无花果,有没有办法可以使用子串函数或类似函数来获取插入语句的字符串部分,无论如何它的长度?

我希望这是有道理的。

我想要做的是在我的插入语句中使用substring(@stringA, starting point of the found substring, the next coma delimiter or if there is none the end of the string)之类的内容。

1 个答案:

答案 0 :(得分: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