tme*_*cer 19 t-sql sql-server sqltransaction
我正在进行一些挖掘并寻找有关SQL Server如何评估的解释MIN(Varchar)
.
我在BOL中找到了这句话:MIN在底层数据库中定义的整理顺序中找到最低值
因此,如果我有一个包含以下值的行的表:
Data
AA
AB
AC
Run Code Online (Sandbox Code Playgroud)
做一个SELECT MIN(DATA)
会返回AA.我只是想了解这背后的原因并更好地理解BOL.
谢谢!
Mar*_*ers 19
它由排序规则(排序顺序)决定.对于大多数文化,整理顺序与英文字母中的字母顺序相同,因此:
因此'AA'是最小值.对于其他文化,这可能不成立.例如,丹麦校对会将'AB'作为最小值返回,因为'AA'>'AB'.这是因为'AA'被视为等同于'Å',这是丹麦字母表中的最后一个字母.
SELECT MIN(s COLLATE Danish_Norwegian_CI_AS) FROM table1; min_s AB
要获得"普通"排序顺序,请使用Latin1_General_Bin
排序规则:
SELECT MIN(s COLLATE Latin1_General_Bin) FROM table1; min_s AA
要重现此结果,您可以创建此测试表:
CREATE TABLE table1 (s varchar(100)); INSERT INTO table1 (s) VALUES ('AA'), ('AB'), ('AC');
不,MIN用于扫描多行的SELECT语句.它将一列作为参数,并返回该列中的"最低"值(同样,根据归类序列).
如果没有GROUP BY子句,结果集将只有一行,MIN的值将是该列中找到的最低值.与GROUP BY子句一起使用时,结果集将为每个组分配一行,MIN的值将是该组中任何行的该列中的最小值.
归档时间: |
|
查看次数: |
33836 次 |
最近记录: |