sql >> Base de Datos >  >> RDS >> Sqlserver

Intercalación del servidor sql para datos multilingües

Para empezar, querrá que todas sus columnas sean nvarchar . Eso se encargará de sus problemas de almacenamiento. En cuanto a la clasificación y el filtrado, las intercalaciones se vuelven importantes como usted dice.

Dependiendo de lo que esté haciendo con los datos y cuántas columnas necesite usar para filtrar y clasificar y cómo esté realizando las operaciones, una forma de hacerlo es con SQL dinámico. Puedes hacer 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

Esa no es una gran solución, pero funciona. También puede lanzar la intercalación después de cualquier campo en una vista, así que como mencionó, esa es una opción. Algo como esto, y luego puede consultarlo sin tener que especificar intercalaciones.

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...

Luego, podría elegir la vista adecuada para realizar consultas.