对多个列组合的总字符应用SELECT LEFT()

时间:2013-05-08 20:48:20

标签: mysql sql select

我想限制从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个字符范围内),并根据需要省略'article' ,然后如果需要省略'标题'以达到100个字符条件。

即。 'heading'给出80个字符,'article'给出120个字符,因此,从'article'中删除100个字符。

'heading'给出110个字符,'article'给出500个字符,因此,从文章中删除500个字符,从'heading'删除10个字符

3 个答案:

答案 0 :(得分: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算法。

答案 1 :(得分:0)

试试这个:

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

这会对两个列进行汇总,而不是获得总Char中的LEFT 100,如果你想要一个空格字符,只需执行CONCAT(heading, ' ', article)

答案 2 :(得分:0)

使用 CONCAT()

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