MYSQL:选择部分文本并根据点位置剪切

时间:2014-08-25 21:17:10

标签: mysql sql select

如果我有这样的表:

--------------------------
| id |      content      |
--------------------------
| 1  | text 1500 chars   |
--------------------------
| 2  | text 300 chars    |
--------------------------
| 3  | text 501 chars    |
--------------------------
| 4  | text 500 chars    |
-------------------------- 

是否可以创建一个查询,该查询最多可选择500个字符并在点位置处切割刺痛。

实施例

Lorem Ipsum简直就是...... PageMaker(这里有500个字符)Lorem Ipsum。 < - 削减。位置。

这可能吗?如果没有,我会尝试创建PHP解决方案。目前我正在研究一些MYSQL函数来完成这项工作。如果我能在查询中实现这一点,那就太好了。

1 个答案:

答案 0 :(得分:6)

也许这样的事情可行:

SELECT
    id,
    CASE
        WHEN len <= 500 THEN content
        ELSE CASE
            WHEN idx > 0 THEN SUBSTRING(content, 1, idx)
            ELSE ''
        END
    END AS content
FROM (
  SELECT 
    id,
    content,
    LOCATE('.', content, 500) AS idx,
    LENGTH(content) AS len
  FROM data
) AS data

你可以在这里看到它:http://sqlfiddle.com/#!2/ac4d3/2(我使用长度为10的字符串,原因很明显;)