It's determined by the collation (sort order). For most cultures the collation order is the same as the alphabetical order in the English alphabet so:
- 'AA' < 'AB'
- 'AA' < 'AC'
- 'AB' < 'AC'
Therefore 'AA' is the minimum value. For other cultures this may not hold. For example a Danish collation would return 'AB' as the minimum because 'AA' > 'AB'. This is because 'AA' is treated as equivalent to '?' which is the last letter in the Danish alphabet.
SELECT MIN(s COLLATE Danish_Norwegian_CI_AS) FROM table1;
min_s
AB
To get an "ordinary" sort order use the Latin1_General_Bin
collation:
SELECT MIN(s COLLATE Latin1_General_Bin) FROM table1;
min_s
AA
To reproduce this result you can create this test table:
CREATE TABLE table1 (s varchar(100));
INSERT INTO table1 (s) VALUES ('AA'), ('AB'), ('AC');
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…