如何使用SQL查找表中的最大值?

时间:2017-10-11 14:25:07

标签: sql sql-server

我正在尝试使用SQL确定整个表中任何数据的最大值。请注意,我的意思是整个表,而不仅仅是一列或一行。整个表是varchar类型,目标是确定最大值是什么(varchar 255,varchar 100等)。

示例:

Name  |  ID
John  |   1
Jake  |   2
James |   3

应该回归"詹姆斯"因为它是整个表中最大的值。我也想要长度。

4 个答案:

答案 0 :(得分:0)

您可以使用

获取字节大小
select max(datalength(col0)+datalength(col1)+datalength(col2)...) from table

警惕这可能是一个昂贵的查询

答案 1 :(得分:0)

您必须为一个特定的表编写查询:

select top(1) value 
from
(
  select datalength(col1) as len, cast(col1 as varchar(max)) as value from mytable
  union all
  select datalength(col2) as len, cast(col2 as varchar(max)) as value from mytable
  union all
  ...
) data
order by len desc;

答案 2 :(得分:0)

由于所有列都是varchar,您可以将表UNPIVOT到一列,然后选择由LEN()DESC排序的TOP 1值。

请注意,如果列具有不同的长度,则需要将它们强制转换为具有相同长度的列,以便它们可以一起旋转。

答案 3 :(得分:-1)

在互联网上查找数据类型及其占用的字节数例如int = 4字节。 如果您有varchar或nvarchar等类型 使用max(len(column))+2长度将为您提供基本相同的字节