Jau kopš senām Microsoft SQL Server versijām ir bijusi problēma, ka latviešu valodas teksti tiek kārtoti nepareizi. Proti, pat tad, ja datubāzei iestatīta “Latviešu” valoda, netiek šķiroti īsie un garie burti (šeit ar “latviešu” saprotu tādas kolācijas kā, piemēram, ‘Latvian_CI_AS’ vai ‘SQL_Latvian_Cp1257_CI_AS_KI_WI’).
Līdz ar to sarakstu bērziņš, avotiņš, āboliņš
SQL serveris kārtoja kā āboliņš, avotiņš, bērziņš
. Kā zinām no ābeces mācīšanās, latviešu alfabēts ir A, Ā, B, C, Č...
, tas ir, diakritiskās zīmes ir atsevišķas un tās seko aiz tā paša burta bez diakritiskās zīmes, tāpēc pareizi būtu bijis avotiņš, āboliņš, bērziņš
.
Kopš SQL server 2008 ir pieejama vēl viena kolāciju saime – tādas, kas sākas ar Latvian_100
, piemēram, Latvian_100_CI_AS
. Šajās kolācijās gan viss ir salabots un kārtošana tiešām strādā pareizi:
select VARDS from (
select 'Bērziņš' as VARDS union
select 'Āboliņš' as VARDS union
select 'Avotiņš' as VARDS) as SAMPLES
order by VARDS collate Latvian_100_CI_AS
rezultāts ir
VARDS
-------
Avotiņš
Āboliņš
Bērziņš
Papildus informāciju var pasmelties MSDN dokumentācijā.