Sql 如何从一个已知单词到另一个已知单词提取子字符串

Sql 如何从一个已知单词到另一个已知单词提取子字符串,sql,substring,qsqlquery,Sql,Substring,Qsqlquery,我试图提取两个单词(包括单词)之间的字符串 作为一个直观的例子: 现场内容:青蛙以惊人的跳跃跳过了苍蝇 停止名称第一标记:frog 停止名称第二个令牌:惊人 我想摘录的是:青蛙以惊人的速度跳过了苍蝇 我尝试了以下代码: [我想要的]=子字符串([FIELD\u CONTENT],CHARINDEX([STOP NAME FIRST TOKEN],[FIELD\u CONTENT]) CHARINDEX([停止名称第二令牌],[字段内容])-CHARINDEX([停止名称第一令牌],[字段内容])

我试图提取两个单词(包括单词)之间的字符串

作为一个直观的例子:

现场内容:
青蛙以惊人的跳跃跳过了苍蝇

停止名称第一标记:
frog

停止名称第二个令牌:
惊人

我想摘录的是:
青蛙以惊人的速度跳过了苍蝇

我尝试了以下代码:

[我想要的]=
子字符串([FIELD\u CONTENT],CHARINDEX([STOP NAME FIRST TOKEN],[FIELD\u CONTENT])
CHARINDEX([停止名称第二令牌],[字段内容])-CHARINDEX([停止名称第一令牌],[字段内容])+Len([停止名称第二令牌])

这给了我一个错误:

味精537,第16级,状态2,第2行
传递给LEFT或SUBSTRING函数的长度参数无效

我不知道我做错了什么


任何建议都将不胜感激。谢谢

第二个
CHARINDEX
前面缺少一个逗号

试试这个。 用字符串更新。

Select SUBSTRING('The frog jumped over the fly in an amazing jump', CHARINDEX('frog', 'The frog jumped over the fly in an amazing jump') 
, CHARINDEX('amazing','The frog jumped over the fly in an amazing jump') - CHARINDEX('frog', 'The frog jumped over the fly in an amazing jump') + Len('amazing'))
结果:

青蛙以惊人的速度跳过了苍蝇

不必进行5函数调用,只需3就可以通过在
CONCAT()内部嵌套两个
子字符串

第一个
子字符串\u INDEX()
生成:
以惊人的跳跃跳过了苍蝇

第二个
子字符串\u INDEX()
生成:
在一个


最后,
CONCAT()
重新附加关键字:
青蛙在一次惊人的

中跳过了苍蝇,你在第二次
CHARINDEX
之前缺少了一个逗号,仍然是相同的错误:(真的。我复制了它并替换了字段名的文本,它对我有效。我使用你提供的字符串更新了我的答案。
SELECT CONCAT('frog',
         SUBSTRING_INDEX(
             SUBSTRING_INDEX('The frog jumped over the fly in an amazing jump','frog',-1),
         'amazing',1)
       ,'amazing') AS 'What I Want'