在TEXT字段中的两个单词之间提取文本

时间:2014-02-20 12:38:28

标签: mysql

我需要在TEXT字段中的每个单词的第一次出现之间获取文本(无论内容如何)。

用户可以在Mysql脚本的开头设置单词作为变量,并且可以更改每次执行。

SET @begin = 'DOLOR';
SET @end = 'AETERNAM';

在下面的模拟文字中,

 lorem ipsum DOLOR sit amet requiem in AETERNAM domine eis kyrie eleison.

我希望能够在没有尾随或前导空格的情况下获取sit amet requiem in

2 个答案:

答案 0 :(得分:0)

SET @begin = 'DOLOR';
SET @end = 'AETERNAM';
SELECT       
   TRIM(SUBSTRING(
                     input,
                     (LOCATE(@begin,input)+LENGTH(@begin)),
                     (LOCATE(@end,input)-LOCATE(@begin,input)-LENGTH(@begin))
                 ))
   AS textbetween
FROM (SELECT 'lorem ipsum DOLOR sit amet requiem in AETERNAM domine eis kyrie eleison.' AS input) subq;

答案 1 :(得分:0)

您可以使用substring_index()的嵌套调用来执行此操作:

select substring_index(substring_index(mock, @begin, 2), @end, 1)

编辑:

你也可以这样做:

select substring_index(substring_index(mock, @end, 1), @begin, 2)

逻辑(对于第一个版本)是:使用@begin根据@begin将字符串分成多个部分。你想要第二个片段(在@begin之后)。然后在@end之前拍摄第一张。

我意识到,如果@begin@end之前多次出现(幸运的是问题中未提及),则这两个都会遇到问题。如果发生这种情况,则substring_index()不是最佳方法。