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関数は、式の最大値を返します。あなたが欲しいのは(私が思うに) と の組み合わせtopです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

MAX は集計関数です。数値列のデータ型を扱う場合、最大値が返されます。文字列の場合、MAX は照合順序で最大値を見つけます。どちらの方法でも、グループごとに 1 つの値のみが返されます。グループが指定されていない場合は、1 つの値のみが返されます。

結果を並べ替えるには、本体の長さを取得する必要があります。次の 2 つのオプションがあります。

  • 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 に答える
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 に答える
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 に答える