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

Sql 如何在不知道子字符串长度的情况下插入较大字符串的子字符串?,sql,sql-server,substring,Sql,Sql Server,Substring,我在ms sql中工作,下面是我在伪代码中尝试做的: 假设我有一个水果池,每个水果都与一个静态数字代码相关联,其中一些水果具有相同的代码: apples = 11 bananas = 27 grapes = 34 pears = 10 watermelon = 8 figs = 34 我有一个动态生成的字符串,其中包含一系列由comas分隔的项,如下所示: StringA: apples, bananas, grapes, pears 我想做的是解析字符串中的每一项,并将其插入到表中的一个单

我在ms sql中工作,下面是我在伪代码中尝试做的:

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

apples = 11
bananas = 27
grapes = 34
pears = 10
watermelon = 8
figs = 34
我有一个动态生成的字符串,其中包含一系列由comas分隔的项,如下所示:

StringA: apples, bananas, grapes, pears
我想做的是解析字符串中的每一项,并将其插入到表中的一个单独的行中,其中水果进入水果列,代码进入代码列

如果我只知道StringA(葡萄或无花果)已经被发现,那么有没有一种方法可以让我使用substring函数或类似的函数来获取insert语句的字符串部分,而不管它的长度如何

我希望这是有道理的


我想做的是在我的insert语句中使用类似于
子字符串(@stringA,找到的子字符串的起点,下一个逗号分隔符,或者如果字符串的末尾没有分隔符)

不太可能,子字符串的定义必须包括所需的字符数以及起点

但你想要实现的是:

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

实际上,子字符串的定义必须包括所需的字符数以及起始点

但你想要实现的是:

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
搜索类似“sql字符串逗号表”的内容搜索类似“sql字符串逗号表”的内容