Na początek chcesz, aby wszystkie Twoje kolumny były nvarchar
. To rozwiąże Twoje problemy z przechowywaniem. Jeśli chodzi o sortowanie i filtrowanie, sortowanie staje się ważne, jak mówisz.
W zależności od tego, co robisz z danymi i ile kolumn musisz użyć do filtrowania i sortowania oraz jak wykonujesz operacje, jednym ze sposobów na to jest dynamiczny sql. Możesz zrobić coś takiego
declare @collation sysname = 'Latin1_General_CI_AS'
declare @cmd nvarchar(max)
set @cmd = 'select * from person order by last_name collate ' + @collation
exec sp_executesql @cmd
To nie jest świetne rozwiązanie, ale działa. Możesz także rzucić sortowanie po dowolnym polu w widoku, więc jak wspomniałeś, jest to opcja. Coś takiego, a następnie możesz zapytać o to bez konieczności określania sortowania.
create view v_Person_RU as
select first_name collate Cyrillic_General_CI_AI, last_name collate Cyrillic_General_CI_AI...
create view v_Person_AR as
select first_name collate Arabic_CI_AI, last_name collate Arabic_CI_AI...
Następnie możesz użyć po prostu wybrać odpowiedni widok do użycia przy zapytaniach.