2010-06-22 3 views
1

Je suis en train de voir les messages les plus longues sur stackoverflow en utilisant:sélectionner les 10 plus longs messages

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

que je fais:

select max(body) from posts;​ 

et il retourne:

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' retourne le dernier par ordre alphabétique. [De nos jours, il revient] (https://data.stackexchange.com/stackoverflow/query/edit/716156): "[π (pi) est une constante mathématique] (https://stackoverflow.com/tags/pi/ info) ... " –

Répondre

3

La fonction max renvoie la valeur maximale d'un expression. Ce que (je pense) vous voulez est une combinaison de top et len(body).

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

facture vous êtes l'homme. pas étonnant qu'ils vous appellent le lézard –

2

Que diriez-vous de quelque chose comme

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

On dirait que vous voulez quelque chose comme:

sélectionner top 10 corps de messages ordre par len (corps) desc

2

max (corps) Doesnt retour le plus long message, mais le dernier message si vous trier par ordre alphabétique. dans notre cas, il commence par

Vous souhaitez à la recherche ...

2

MAX est un aggregate function. Lorsqu'il s'agit d'un type de données de colonne numérique, il renvoie la valeur la plus élevée. Pour les colonnes de caractères, MAX trouve la valeur la plus élevée dans la séquence de classement. De toute façon, il ne retournera qu'une valeur par groupe - si aucun groupe n'est spécifié, il ne retournera qu'une seule valeur.

Cela vous laisse besoin d'obtenir la longueur du corps de sorte que vous pouvez commander les résultats - vous avez deux options:

  • LEN renvoie le nombre de caractères, plutôt que le nombre d'octets, de la expression de chaîne donnée, excluant les espaces de fin.
  • DATALENGTH renvoie le nombre d'octets utilisés pour représenter une expression. DATALENGTH est particulièrement utile avec les types de données varchar, varbinary, text, image, nvarchar et ntext car ces types de données peuvent stocker des données de longueur variable. La DATALENGTH de NULL est NULL.

Vous voudriez utiliser la requête suivante:

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