Latin1_General_CI_AS is case insensitive. That is, 'Bravo' is equal to
'bravo' for sorting and comparision purposes. So one might come first, or
the other might come first. SQL Server is allowed to choose whichever one
it wants to, and a different set of data, or a different service pack or
many other things might have the result in a different order. This is
equivalent to having two rows with an integer column, both of the rows
having a 2 in that column, selecting the data ordered by that column and
asking "Why did SQL Server put this row with a 2 in front of that row with a
2?"
Tom
[quoted text, click to view] "Dan" <Dan@discussions.microsoft.com> wrote in message
news:4AD82189-0393-4485-BDA4-942A0EC92664@microsoft.com...
>I encountered an interesting anomaly in a sort operation with SQL Server.
>It
> appears that the dictionary sort order will place a lower case b ahead of
> a
> upper case B. I ran the following script and got the strange results:
>
> CREATE TABLE MySortTable
> (DictionarySort nvarchar(10) COLLATE Latin1_General_CI_AS NULL)
> GO
> INSERT MySortTable
> VALUES ('Alpha')
> INSERT MySortTable
> VALUES ('Bravo')
> INSERT MySortTable
> VALUES ('Charlie')
> INSERT MySortTable
> VALUES ('alpha')
> INSERT MySortTable
> VALUES ('bravo')
> INSERT MySortTable
> VALUES ('charlie')
> GO
> SELECT DictionarySort FROM MySortTable
> ORDER BY DictionarySort
>
> The results show the following:
> Alpha
> alpha
> bravo
> Bravo
> Charlie
> charlie
>
> Very strange!! anyone have an explanation?