首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将SELECT LEFT()应用于组合的多列中的总字符数

将SELECT LEFT()应用于组合的多列中的总字符数
EN

Stack Overflow用户
提问于 2013-05-09 04:48:20
回答 3查看 104关注 0票数 1

我想限制从MySQL数据库检索的字符,并且我知道要使用的函数是LEFT()。这是我的问题

代码语言:javascript
运行
复制
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个字符。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-09 04:52:55

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2013-05-09 04:50:46

试试这个:

代码语言:javascript
运行
复制
SELECT id,
  LEFT(CONCAT(heading, article), 100) AS heading_article
FROM news
ORDER BY stamp DESC
LIMIT 5;

这会将两列连接在一起,然后获得总字符的LEFT 100,如果您需要在它们之间插入一个空格字符,只需执行CONCAT(heading, ' ', article)

票数 0
EN

Stack Overflow用户

发布于 2013-05-09 04:51:50

使用

代码语言:javascript
运行
复制
SELECT id,
  LEFT(concat(heading,article), 80) AS heading,
FROM news
ORDER BY stamp DESC
LIMIT 5;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16449917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档