我有一个数据库,其中包含一些主题,每个主题都有标题和一些描述。在标题页中,我必须显示该主题的所有标题和几行描述。当用户点击一个主题时,他将被带到一个页面,在那里他可以找到整个描述。完全像stackoverflow站点,其中简要显示每个问题的描述。
我想知道有没有一种方法可以直接从数据库中检索这样的简短描述,或者前端是否应该解析检索到的记录并相应地截断它?有没有办法直接从数据库中查询记录的简短版本。我使用MySql作为我的数据库和php来显示网页。
答案 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的建议在中间切断字词
答案 3 :(得分:1)
select LEFT (description, CHARINDEX(' ', description, 50) ) from topics
这似乎正确地解决了我的问题......感谢所有答案。
答案 4 :(得分:0)
你的意思是文本字段中的一大块文本吗?
赞select left(LongTextField,200) from myTable
答案 5 :(得分:0)
你可以使用这样的强制转换来限制你得到的值: 从表
中选择标题,强制转换(描述为varchar(300))或者你可以将一个较少磨损的截断描述存储为smallDescription或表中的任何内容(然后让你的前端让你标记它并为你解剖它^^)。