SQL Server UPPER function on non-english characters
Last week, I got a question
Does SQL Server “UPPER” function work properly on non-English characters as well? Tried searching in net, but couldn’t find clear documentation around this..
I did a quick test on my SQL box:
--upper case i in Turish is different
select upper(N'i')
go
select upper(N'i' collate turkish_ci_as)
go
--This does not work, I am not sure why
select lower(N'SS')
select lower(N'SS' collate German_PhoneBook_CI_AI)
select upper(N'ß' collate German_PhoneBook_CI_AI)
go
So the answer is YES, and the reason SS in German not working is because of
The reason why the example above works the way it does is because Windows casing tables only support simple Unicode casing. That doesn’t include rules that would change the size of the
string such as lowercasing SS as ß, or uppercasing ß as SS.