我觉得这不应该这么难,但我想查询一个长文本字段,以获得一个字符串出现:"<blog:"。我希望它返回这个字符串,最好是通过它的结尾,">" Substring_Index似乎没有为我这样做。有什么建议吗?我目前有:
SELECT body, SUBSTRING(`body`, LOCATE("<blog:", body),20)as blogCat
from T1; 这会返回该字符串之后的所有内容,这是大量的数据。理想情况下,我希望它在第一个">“-这是可能的吗?
发布于 2014-10-20 17:53:17
可以多次使用“定位”。
在< blog之后获取>,然后使用子字符串获取这两个字符串之间的字符串
SQL Fiddle
SELECT body, SUBSTRING(`body`, LOCATE("<blog:", body),
LOCATE(">", body, LOCATE("<blog:", body) )
- LOCATE("<blog:", body) +1
)as blogCat
FROM T1;发布于 2014-10-20 17:57:51
根据我的理解,您希望找到一个发生在S1和S2之间的子字符串。在这种情况下,尝试如下(我没有测试语法):
SELECT
SUBSTRING(body, LOCATE("<blog:", body), LOCATE(">", body, LOCATE("<blog:", body)) - LOCATE("<blog:", body))
FROM
T1顺便提一句,我不知道在你的例子中,你是怎么得到整个字符串的,就像你声称的那样,因为你明显地把你的子字符串限制在20个字符。
https://stackoverflow.com/questions/26471090
复制相似问题