substring返回仅查询字符串+ 10个字符

时间:2014-10-20 17:05:46

标签: mysql substring

我觉得这不应该这么难,但我想查询一个长文本字段以查找字符串出现:"<blog:"。我希望它返回这个字符串,最好是通过它的结尾">" Substring_Index似乎不会为我做这个。有什么建议?我目前有:

        SELECT body, SUBSTRING(`body`, LOCATE("<blog:", body),20)as blogCat 
        from T1;     

这将返回一切超过该字符串的内容,这是很多数据。理想情况下,我希望在第一个&#34;&gt;&#34; - 那可能吗?

2 个答案:

答案 0 :(得分:0)

你可以多次使用LOCATE

先获得&gt;之后&lt; 博客,然后使用子字符串

只获取这两个字符串之间的字符串

SQL Fiddle

SELECT body, SUBSTRING(`body`, LOCATE("<blog:", body), 
                       LOCATE(">", body, LOCATE("<blog:", body) ) 
                       - LOCATE("<blog:", body) +1 
                      )as blogCat 
FROM T1;

答案 1 :(得分:0)

根据我的理解,您正在寻找在S1和S2之间发生的子串。在这种情况下,试试这个(我没有测试语法):

SELECT
    SUBSTRING(body, LOCATE("<blog:", body), LOCATE(">", body, LOCATE("<blog:", body)) - LOCATE("<blog:", body))
FROM
    T1

在旁注中,我不确定在你的例子中,你是如何获得所有整个字符串的,因为你明确将子字符串限制为20个字符。