仅检索数据库中的部分记录

时间:2011-05-06 04:45:58

标签: php mysql sql

我有一个数据库,其中包含一些主题,每个主题都有标题和一些描述。在标题页中,我必须显示该主题的所有标题和几行描述。当用户点击一个主题时,他将被带到一个页面,在那里他可以找到整个描述。完全像stackoverflow站点,其中简要显示每个问题的描述。

我想知道有没有一种方法可以直接从数据库中检索这样的简短描述,或者前端是否应该解析检索到的记录并相应地截断它?有没有办法直接从数据库中查询记录的简短版本。我使用MySql作为我的数据库和php来显示网页。

6 个答案:

答案 0 :(得分:3)

SELECT SUBSTRING(`title`, 0, 100) FROM `topics`

答案 1 :(得分:2)

我想在这篇文章中找到答案: SQL Server substring breaking on words, not characters

您不希望仅限制字符串长度,因为那样您可能会在中间切断一个单词。相反,您需要设置最大长度,然后返回到有空格的位置。

另一种选择是运行一次,然后更新存储截断文本的表中的字段。这样你就可以限制额外的SQL调用,但仍然可以使用格式良好的摘要文本。

答案 2 :(得分:2)

最佳解决方案:

SELECT SUBSTRING_INDEX('your string', ' ', 10);

这会将你的字符串返回10个空格。

注意: SUBSTRING会导致您按照@BiggsTRC的建议在中间切断字词

Reference

答案 3 :(得分:1)

  select LEFT (description, CHARINDEX(' ', description, 50) ) from topics

这似乎正确地解决了我的问题......感谢所有答案。

答案 4 :(得分:0)

你的意思是文本字段中的一大块文本吗?

select left(LongTextField,200) from myTable

答案 5 :(得分:0)

你可以使用这样的强制转换来限制你得到的值: 从表

中选择标题,强制转换(描述为varchar(300))

或者你可以将一个较少磨损的截断描述存储为smallDescription或表中的任何内容(然后让你的前端让你标记它并为你解剖它^^)。