Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

agrupamento do sql server para dados multilíngues


Para começar, você vai querer que todas as suas colunas sejam nvarchar . Isso resolverá seus problemas de armazenamento. Quanto à classificação e filtragem, os agrupamentos se tornam importantes como você diz.

Dependendo do que você está fazendo com os dados e quantas colunas você precisa usar para filtrar e classificar e como você está fazendo as operações, uma maneira de fazer isso é com sql dinâmico. Você pode fazer algo como
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

Essa não é uma ótima solução, mas funciona. Você também pode lançar o agrupamento após qualquer campo em uma exibição, então, como você mencionou, essa é uma opção. Algo assim, e então você pode consultá-lo sem precisar especificar agrupamentos.
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...

Então você pode usar apenas escolher a visualização certa para usar para consulta.