2011-05-06 34 views
3

我有一個數據庫,其中包含一些標題和一些描述的主題。在標題頁面中,我必須顯示該主題的所有標題和幾行描述。當用戶點擊一個主題時,他會被帶到一個可以找到整個描述的頁面。完全像stackoverflow站點,簡短地顯示每個問題的描述。只檢索數據庫中的一部分記錄

我想知道有沒有一種方法可以直接從數據庫中檢索這樣的簡短描述,還是應該前端解析檢索到的記錄並相應截斷它?有沒有辦法直接從數據庫中查詢記錄的簡短版本。我使用MySql作爲我的數據庫和PHP來顯示網頁。

回答

2

我想說的答案是在這個帖子中發現: SQL Server substring breaking on words, not characters

你不會希望僅僅通過一個字符串長度限制,因爲那麼你可能會切斷字正中間。相反,你會想設置你的最大長度,然後回到有空間的地方。

另一種選擇是運行一次,然後更新存儲截斷文本的表中的字段。這樣你可以限制你的額外的SQL調用,但仍然有很好的格式化總結文本。

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

但是,這樣做會使您在中間切斷文字。除非你顯示半個字,否則你應該比這更進一步。 – IAmTimCorey 2011-05-06 04:55:53

+0

有完整的單詞是我認爲更好。 – sasidhar 2011-05-06 05:08:44

0

你是指文本字段中的文本塊嗎?

select left(LongTextField,200) from myTable

0

你可以限制你回來與這樣的投值:從表

選擇名稱,演員(描述爲varchar(300)),或者你可以存儲一個不太磨料截斷描述作爲一個小描述或表中的任何內容(然後讓你的前端讓你標記它,併爲你解剖它^^)。

2

最好的解決辦法:

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

這將返回您的字符串高達10位。

注: SUBSTRING通過@BiggsTRC

Reference

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

,這似乎正確地解決我的問題,因爲建議的原因,你切斷的話正中......任何方式感謝所有的答案。