我试图在两个单词之间提取字符串(包括单词。)
以视觉为例:
字段内容: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函数的长度参数无效。
我不知道我做错了什么。
非常感谢任何建议。谢谢!!
答案 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