выберите топ 10 самых длинных постов - PullRequest
1 голос
/ 22 июня 2010

Я пытаюсь просмотреть самые длинные сообщения в стеке, используя:

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 ]

3 голосов
/ 22 июня 2010

Функция max возвращает максимальное значение выражения. То, что (я думаю) вы хотите, это комбинация top и len(body).

select top 10 len(body), Id as [Post Link] 
from posts
order by len(body) desc
3 голосов
/ 22 июня 2010
select top 10 body from posts order by len(body) desc;
2 голосов
/ 22 июня 2010

MAX - совокупная функция .При работе с типом данных числового столбца он вернет самое высокое значение.Для символьных столбцов MAX находит самое высокое значение в последовательности сортировки.В любом случае, он будет возвращать только одно значение на группу - если группы не указаны, он будет возвращать только одно значение.

В результате вам не нужно будет получать длину тела, чтобы вы могли упорядочить результаты -у вас есть две опции:

  • LEN возвращает количество символов, а не количество байтов, данного строкового выражения, исключая конечные пробелы.
  • DATALENGTH возвращает количество байтов, используемых для представления любого выражения.DATALENGTH особенно полезен для типов данных varchar, varbinary, text, image, nvarchar и ntext, поскольку эти типы данных могут хранить данные переменной длины.DATALENGTH из NULL равен NULL.

Таким образом, вы хотите использовать следующий запрос:

  SELECT TOP 10 p.body
    FROM POSTS p
ORDER BY DATALENGTH(p.body) DESC
2 голосов
/ 22 июня 2010

макс (корпус) Не возвращает самое длинное сообщение, но последнее сообщение, если вы сортируете по алфавиту. в нашем случае это начинается с

Вы бы искали ...

2 голосов
/ 22 июня 2010

Как насчет чего-то вроде

select top 10 len(body) from posts order by len(body) desc​
1 голос
/ 22 июня 2010

Похоже, вы хотите что-то вроде:

выберите топ 10 из постов заказ по лен (тело) desc

1 голос
/ 22 июня 2010
Select Top 10 Title, Len(Body) As BodyLength
From Posts
Order By Len(Body) Desc
...