Sql Max(String)返回什么值

Sql Max(String)返回什么值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我对MS-SQL Server有疑问 Select Name, max(Class),min(Rank) from table t with (nolock) group by Name 上面的查询是否会返回包含max的值(Ascii(类)) 或者以下面的方式 Select Name,max(cast(Class as varbinary)),min(Rank) from table t with (nolock) group by Name SQL Server就

我对MS-SQL Server有疑问

Select   Name, max(Class),min(Rank)
from     table t with (nolock)
group by Name
上面的查询是否会返回包含max的值(Ascii(类))

或者以下面的方式

Select   Name,max(cast(Class as varbinary)),min(Rank) 
from     table t with (nolock)
group by Name
SQL Server就是这样处理它们并返回值的……有人能告诉我SQL Server处理它们的正确方式吗

Select   Name, max(Class),min(Rank)
from     table t with (nolock)
group by Name
这将按字母顺序从降序返回前1

Select   Name,max(Ascii(Class)),min(Rank) 
from     table t with (nolock)
group by Name
这一个从所有行中获取
第一个字母的ASCII值
,并返回最大值。例如,类为“End”,则“e”的ASCII值为“69”。

选择最大值(类)
将返回按描述顺序排在第一位的字符串

意味着你有ttt,tuv,tav意味着结果是tuv

但是
选择MAX(Ascii(类))
返回字符串dude中第一个字符的第一个Ascii值

在SELECT max(cast(类为varbinary))中,也可以像SELECT max(类)查询一样工作…

这取决于1。服务器具有默认排序规则,数据库具有默认排序规则,字符串列具有排序规则,并且您可以在特定查询期间重写排序规则

所以

返回:

-------- --------
t        ß
如果没有强制转换,您会得到什么结果取决于
列的排序规则。这将在创建该列时设置,可以显式地设置,也可以通过继承创建时的数据库默认值来设置



1基本上,排序规则允许您告诉SQL Server您的特定数据应该使用什么排序顺序和比较规则,因此,
MAX
只是应用已选择的规则。

Class
是什么数据类型在varchar中有类?它将以降序显示类,从“Z”开始,将排在第一位我想你已经看到了这个问题,我不是问它返回什么每个人都知道。我不想知道它是如何返回的..我不知道这是否有帮助,但为什么你不写“选择前1名”并按字符串排序?我已经告诉Jesuraja,你不是第二个你可以简单地添加注释..我怎么能在注释中添加这么多行。。。这很容易理解,jst需要一个确认,比如SQL如何在内部处理语句。它会将所有的值转换成什么(Varbinary或binary),以便计算机更好地理解。谢谢Damien,为我澄清了疑问,最后它是排序规则,而不是其他任何东西。
declare @t table (
    Col varchar(50) not null
)
insert into @t(Col) values ('s'),('t'),('ß')

select
    MAX(col collate Latin1_General_CS_AS),
    MAX(col collate Latin1_General_100_BIN)
from @t
-------- --------
t        ß