选择前10个最长的帖子

时间:2010-06-22 15:28:09

标签: odata azure-sql-database

我正在尝试使用以下方法查看stackoverflow上最长的帖子:

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.

7 个答案:

答案 0 :(得分:3)

select top 10 body from posts order by len(body) desc;

答案 1 :(得分:3)

max函数返回表达式的最大值。我想要的是toplen(body)的组合。

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

答案 2 :(得分:2)

这样的东西
select top 10 len(body) from posts order by len(body) desc​

答案 3 :(得分:2)

<强> MAX(体) 如果按字母顺序排序,则不会返回最长的消息,而是返回最后一条消息。 在我们的例子中,它以

开头
  

正在寻找......

答案 4 :(得分: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

答案 5 :(得分:1)

Select Top 10 Title, Len(Body) As BodyLength
From Posts
Order By Len(Body) Desc

答案 6 :(得分:1)

看起来你想要这样的东西:

从帖子中选择前10名正文 按len(body)desc命令