仅从MySQL返回子串

时间:2013-04-15 17:18:36

标签: mysql substring

我需要找到一种方法,只能从大型多段记录中返回图像URL。我有一个id(int)和一个body(text)列。所以我的结果需要看起来像这样:

id | body
---------------------
#  | http://... .jpg

返回“和src =很好,如果这就是需要的。每页有多个图像,我需要所有这些图像,理想情况是在不同的行上。

我无法理解这一点,因为我能找到的每个SELECT组合都能让我回到整个记录。我不需要2000个单词的内容 - 我只需要URL。

任何想法,比我更聪明的伟大社区?

2 个答案:

答案 0 :(得分:0)

我的第一个建议是,如果您需要检索整体数据的部分内容,那么您应该对数据库模式进行修改,以便以这种方式存储信息。也许放在一起编写一个脚本来遍历数据库并填充一个只包含链接的新字段。

除此之外,您可以调查MySQL的字符串函数(http://dev.mysql.com/doc/refman/5.5/en/string-functions.html)以提出可能适合您的解决方案。我可能会建议查看SUBSTRING_INDEX(基于src=")。但实际情况是MySQL的功能非常有限,因为你做了类似的建议,特别是如果你需要从任何给定的内容块中提取多个URL。如果您需要在应用中定期执行此操作,那么最好将此信息拆分为单独的字段。

答案 1 :(得分:0)

With CTE as
(Select UPPER('HELLO THIS IS A TEST OF THE EMERGENCY 
 HTTP://someurl.domain.gov/wizziwig.jpg and more next and still more text.') 
 as txt
FROM DUAL)
select instr(txt,'HTTP:'), instr(txt,'.JPG'), 
      substr(txt,instr(txt,'HTTP:'),instr(txt,'.JPG')
      -instr(txt,'HTTP:')+4) from CTE

然而,这有限制,假设只有一个HTTP:/和只有一个.JPG