Pro začátek budete chtít, aby všechny vaše sloupce byly nvarchar
. To se postará o vaše problémy s úložištěm. Pokud jde o třídění a filtrování, pak se porovnávání stává důležitým, jak říkáte.
V závislosti na tom, co děláte s daty a kolik sloupců potřebujete použít pro filtrování a řazení a jak provádíte operace, je jedním ze způsobů, jak to udělat, pomocí dynamického sql. Můžete udělat něco jako
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
Není to skvělé řešení, ale funguje to. Porovnání můžete také hodit za libovolné pole v pohledu, takže jak jste zmínil, je to možnost. Něco takového a pak se můžete dotazovat, aniž byste museli zadávat porovnávání.
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...
Pak můžete použít jen vybrat správný pohled, který chcete použít pro dotazování.