2010-10-08 58 views
1

我正在使用TinyMCE來允許用戶寫入最終將提交到數據庫的內容。mysql檢索部分列

TinyMCE包含一個按鈕,它將插入一個「分頁符」(實際上只是一個HTML註釋<!--pagebreak-->)。

我怎樣才能在第一次出現分頁符「標籤」時拉回所有東西?那個標籤後面可能會有一些重要的數據,我可能會在之後通過php丟棄這些數據,但似乎我不應該把它帶回來。所以我可以將SELECT只是列的一部分,如果我不知道<!--pagebreak-->會有多遠?

編輯: 下面的答案不工作,並會帶我到任何我需要去..我只是好奇,如果有一個同樣簡單的方式來處理帶回整列,如果它是短暫的因此分頁標記不存在。使用以下解決方案,如果未找到分頁符,則返回空字符串。

如果沒有,那麼我可以很容易地在代碼中處理它。

+0

在mySQL中查找分頁符標記的操作可能與丟棄PHP中其餘數據一樣昂貴。我個人會堅持使用PHP。 – 2010-10-08 02:47:40

+0

注意到了,但就代碼維護而言,我覺得將它全部打包在SQL語句中可能會更好。 – 2010-10-08 02:52:15

回答

2

像這樣的東西應該讓你的一切到<!--

SELECT SUBSTRING(my_col FROM 1 FOR POSITION('<!--' IN my_col)-1) AS a_chunk 
    FROM my_table 

Reference for string functions

編輯:
只是把OMG小馬的話到SQL:

SELECT CASE WHEN position('<!--' IN my_col) > 0 
      THEN SUBSTRING(my_col FROM 1 FOR POSITION('<!--' IN my_col)-1) 
      ELSE my_col END AS a_chunk 
    FROM my_table 

這聽起來像你還需要對文本的長度進行檢查;是否存在分頁符。你可以使用CHARACTER_LENGTH()

+0

+1:這正是我的想法 - 只是一個簡單的子串處理,使用POSITION或LOCATE ...它甚至可以*格式化*就像我寫的一樣! – 2010-10-08 02:56:34

+0

有沒有辦法處理可能沒有分頁符的短輸入? – 2010-10-08 03:39:36

+0

這不是我在測試中看到的。看起來好像是沒有分頁符,返回一個空字符串。 – 2010-10-08 04:03:36

1

爲什麼不在你的mysql表中創建另一列來存儲<!--pagebreak-->所在位置的整數值。您將在腳本中計算此值,並在插入由tinymce生成的html時同時存儲此值。

然後在稍後的檢索中,使用該列中的值來選擇從1直到該值的子字符串。這應該使您的查詢更簡單,也許可以提高查詢性能?