2010-06-22 59 views
1

我试图使用,查看计算器中最长的帖子:选择排名前10位最长的帖子

https://data.stackexchange.com/stackoverflow/query/new

我做:

select max(body) from posts;​ 

,并返回:

You'd be looking to static link (as opposed to dynamically link) 

I'm not sure how many of the MS redistributables statically link in. 
+0

'max'按字母顺序返回最后一个。 [现在它返回](https://data.stackexchange.com/stackoverflow/query/edit/716156):“[π(pi)是一个数学常量](https://stackoverflow.com/tags/pi/信息)...“ – 2017-08-29 15:08:58

回答

3

max函数返回的最大值表达。你想要什么(我认为)是toplen(body)的组合。

select top 10 len(body), Id as [Post Link] 
from posts 
order by len(body) desc 
+0

法案你是男人。难怪他们称你为蜥蜴 – 2010-06-22 15:42:19

2

怎么样像

select top 10 len(body) from posts order by len(body) desc​ 
3
select top 10 body from posts order by len(body) desc; 
1
Select Top 10 Title, Len(Body) As BodyLength 
From Posts 
Order By Len(Body) Desc 
1

它看起来像你想要的东西,如:

由LEN(身体)递减选择职位 顺序前10名身体

2

MAX(体) 犯规返回最长的消息,但最后的消息,如果你按字母顺序排序。 在我们的情况下,它开始与

你会寻找...

2

MAX是aggregate function。处理数字列数据类型时,它将返回最高值。对于字符列,MAX查找整理序列中的最高值。无论哪种方式,它只会为每个组返回一个值 - 如果没有指定组,它将只返回一个值。

这使得你需要得到身体的长度,这样你就可以订购的结果 - 你有两个选择:

  • LEN返回的字符数,而不是字节数,给定的字符串表达式,不包括尾随空格。
  • DATALENGTH返回用于表示任何表达式的字节数。 DATALENGTH对varchar,varbinary,text,image,nvarchar和ntext数据类型特别有用,因为这些数据类型可以存储可变长度的数据。 NULL的DATALENGTH为NULL。

所以,你想使用下面的查询:

SELECT TOP 10 p.body 
    FROM POSTS p 
ORDER BY DATALENGTH(p.body) DESC