1

我正在尝试使用以下方法查看 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.
4

7 回答 7

3
select top 10 body from posts order by len(body) desc;
于 2010-06-22T15:33:25.400 回答
3

max函数返回表达式的最大值。(我认为)您想要的是topand的组合len(body)

select top 10 len(body), Id as [Post Link] 
from posts
order by len(body) desc
于 2010-06-22T15:37:47.887 回答
2

像这样的东西怎么样

select top 10 len(body) from posts order by len(body) desc​
于 2010-06-22T15:32:40.847 回答
2

max(body) 如果按字母顺序排序,则不返回最长的消息,而是最后一条消息。在我们的例子中,它从

你会看...

于 2010-06-22T15:42:18.460 回答
2

MAX 是一个聚合函数。在处理数值列数据类型时,它将返回最大值。对于字符列,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
于 2010-06-22T15:48:27.337 回答
1
Select Top 10 Title, Len(Body) As BodyLength
From Posts
Order By Len(Body) Desc
于 2010-06-22T15:34:53.123 回答
1

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

从帖子中选择前 10 个身体,按 len(body) desc 排序

于 2010-06-22T15:34:54.047 回答