我想限制从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个字符。
发布于 2013-05-08 20:52:55
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-08 20:50:46
试试这个:
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-08 20:51:50
使用
SELECT id,
LEFT(concat(heading,article), 80) AS heading,
FROM news
ORDER BY stamp DESC
LIMIT 5;
https://stackoverflow.com/questions/16449917
复制