2017-10-11 320 views
-2

我正在嘗試使用SQL來確定整個表中的任何數據的最大值。請注意,我的意思是整個表格,而不僅僅是一列或一行。整個表的類型是varchar,目標是確定最大值是什麼(varchar 255,varchar 100等)。如何使用SQL查找表中的最大值?

例子:

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

應該返回「詹姆斯」,因爲它是在整個表的最大值。我也想要這個長度。

+1

樣本數據?你有什麼嘗試? –

+0

您能否提供表格結構? – Tyron78

+6

什麼是「字節值」?你的問題沒有任何意義。樣本數據和期望的結果將有所幫助。 –

回答

0

由於ll列是varchar,您可以將表格UNPIVOT放入一列,然後選擇由LEN()DESC排序的TOP 1值。

請注意,如果列的長度不同,則需要將它們投射到具有相同長度的所有列,以便它們可以一起轉移。

+0

輝煌,謝謝! –

-1

查找互聯網的數據類型以及它們需要多少字節例如int = 4字節。 如果你有類型,如VARCHAR或nvarchar 使用max(len(column))+2長度會給你這是basicly相同

+0

我特別聲明,我不希望它只是一列,所以這沒有幫助。 –

+0

你可以使用這個表中的所有列,正如我所說如果它是int你的列大小將是4字節無關緊要的值是什麼,如果類型是字符它的長度,如果它的varchar或nvarchar長度+ 2 如果你可以找到1列這樣的,你可以找到所有 – JurgenHakanHifzi

0

你可以得到的字節大小的字節使用

select max(datalength(col0)+datalength(col1)+datalength(col2)...) from table 

警惕,這可能是一個昂貴的查詢

+0

...昂貴的查詢* –

+0

感謝使它更清晰! –

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; 
相關問題