mysql检索部分列

时间:2010-10-08 02:46:08

标签: select mysql

我正在使用TinyMCE来允许用户写入最终将提交给数据库的内容。

TinyMCE包含一个插入“分页符”的按钮(实际上只是一个HTML评论<!--pagebreak-->)。

我怎样才能将所有内容撤回到第一次出现的pagebreak“tag”?在那个标签之后可能会有一些重要的数据我可以稍后通过php丢弃,但似乎我甚至不应该把它带回来。如果我不知道SELECT将会对数据有多远,我可以<!--pagebreak-->只是列的一部分吗?

修改 下面的答案确实有效,并且会让我到达我需要去的地方..我很好奇是否有一个同样简单的方法来处理整个列,如果它很短,因此pagebreak标签不存在。使用以下解决方案,如果未找到分页符,则返回空字符串。

如果没有,那么我可以在代码中轻松处理它。

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

为什么不在mysql表中创建另一列来存储<!--pagebreak-->所在位置的整数值。您将在脚本中计算此值,并在插入由tinymce生成的html时同时存储此值。

然后在以后的检索中使用该列中的值来选择从1到该值的子字符串。这应该使您的查询更简单,并可能提高查询性能?