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

时间:2017-05-22 18:42:00

标签: sql substring qsqlquery

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

以视觉为例:

字段内容:The frog jumped over the fly in an amazing jump

停止名字第一个令牌:frog
停止名称第二个令牌:amazing

我想要提取的内容:frog jumped over the fly in an amazing

我尝试了以下代码:

[我想要的] = SUBSTRING([FIELD_CONTENT], CHARINDEX([STOP NAME FIRST TOKEN], [FIELD_CONTENT]) CHARINDEX([STOP NAME SECOND TOKEN],[FIELD_CONTENT]) - CHARINDEX([STOP NAME FIRST TOKEN], [FIELD_CONTENT]) + Len([STOP NAME SECOND TOKEN]))

它给了我这个错误:

  

Msg 537,Level 16,State 2,Line 2
  传递给LEFT或SUBSTRING函数的长度参数无效。

我不知道我做错了什么。

非常感谢任何建议。谢谢!!

2 个答案:

答案 0 :(得分:0)

您在第二个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'))

<强>结果:

  青蛙跳过了一个惊人的

答案 1 :(得分:0)

  

不是进行 5 函数调用,而是通过在SUBSTRING_INDEX()内嵌套两个CONCAT()来完成 3 :< / p>

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'

第一个SUBSTRING_INDEX()生成:jumped over the fly in an amazing jump
第二个SUBSTRING_INDEX()生成:jumped over the fly in an
最后CONCAT()重新附加关键字:frog jumped over the fly in an amazing