2010-06-22 61 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