我想限制从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个字符
答案 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;