我需要在TEXT字段中的每个单词的第一次出现之间获取文本(无论内容如何)。
用户可以在Mysql脚本的开头设置单词作为变量,并且可以更改每次执行。
SET @begin = 'DOLOR';
SET @end = 'AETERNAM';
在下面的模拟文字中,
lorem ipsum DOLOR sit amet requiem in AETERNAM domine eis kyrie eleison.
我希望能够在没有尾随或前导空格的情况下获取sit amet requiem in
。
答案 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()
不是最佳方法。