我觉得这不应该这么难,但我想查询一个长文本字段以查找字符串出现:"<blog:"
。我希望它返回这个字符串,最好是通过它的结尾">"
Substring_Index似乎不会为我做这个。有什么建议?我目前有:
SELECT body, SUBSTRING(`body`, LOCATE("<blog:", body),20)as blogCat
from T1;
这将返回一切超过该字符串的内容,这是很多数据。理想情况下,我希望在第一个&#34;&gt;&#34; - 那可能吗?
答案 0 :(得分:0)
你可以多次使用LOCATE
先获得&gt;之后&lt; 博客,然后使用子字符串
只获取这两个字符串之间的字符串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个字符。