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');