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'