SQL 服务器中某个字段的 DATALENGTH 前 50 条记录

Top 50 records by DATALENGTH of a field in SQL Server

Azure SQL Server 2016 - 我在组合 TOPMAXDATALENGTH 获取前 50 条记录列表的语法时遇到问题来自特定字段的 table by DATALENGTH

我需要执行 DATALENGTH 的字段称为 Text。我 实际上想要在结果中返回 Text 字段 - 我想要返回的是来自 50 条记录的名为 CaptureIdTaskSourceId 的字段在 Text 字段中具有最大的 DATALENGTH,以及 DATALENGTH 数量。

我试过了,但没有用,出现有关 CaptureId 未包含在聚合函数或 GROUP BY 子句中的错误。

SELECT TOP 50 
    CaptureId, 
    TaskSourceId, 
    MAX(DATALENGTH([Text]))
FROM 
    Data.Capture

有人可以帮我更正这个查询吗?

您不需要 max。只需对记录进行排序:

select top 50 
  captureid, tasksourceid, datalength(text) as text_len
from data.capture
order by datalength(text) desc

这将不关心关系和 return 最多 50 行。

如果您想考虑与文本字段数据长度相关的关系,请使用 top 50 with ties 而不是简单的 top 50。在这种情况下可能 return 超过 50 条记录。