1

我想限制从 MySQL 数据库中检索的字符,我知道 LEFT() 是要使用的函数。这是我的查询

SELECT id,
  LEFT(heading, 80) AS heading,
  LEFT(article, 20) AS article
FROM news
ORDER BY stamp DESC
LIMIT 5;

但实际上我想要的是限制从“标题”和“文章”列组合中检索到的字符总数......

以其他方式;我总是希望两列的总数为 100 个字符,优先于“标题”......所以,SQL 先生,尽可能显示“标题”(在 100 个字符范围内),并根据需要从“文章”中省略, 然后如果需要从“标题”中省略以达到 100 个字符的条件。

即“标题”给出 80 个字符,“文章”给出 120 个字符,因此,从“文章”中删除 100 个字符。

“标题”给出 110 个字符,“文章”给出 500 个字符,因此,从文章中删除 500 个字符,从“标题”中删除 10 个字符

4

3 回答 3

1
SELECT id,
  LEFT(heading, 100) AS heading,
  IF(LENGTH(heading)>=100, '', LEFT(article, 100-LENGTH(heading))) AS article
FROM news
ORDER BY stamp DESC
LIMIT 5;

显然,如果您不关心像原始查询那样将它放在 2 列中,那么请使用CONCAT其他提到的算法。

于 2013-05-08T20:52:55.223 回答
0

尝试这个:

SELECT id,
  LEFT(CONCAT(heading, article), 100) AS heading_article
FROM news
ORDER BY stamp DESC
LIMIT 5;

这将两列连接起来,而不是得到LEFT总字符的 100,如果你想要一个空格字符,只需执行CONCAT(heading, ' ', article)

于 2013-05-08T20:50:45.777 回答
0

使用CONCAT()

SELECT id,
  LEFT(concat(heading,article), 80) AS heading,
FROM news
ORDER BY stamp DESC
LIMIT 5;
于 2013-05-08T20:51:50.230 回答