sql >> Database >  >> RDS >> Sqlserver

sql-serversortering voor meertalige gegevens

Om te beginnen wil je dat al je kolommen nvarchar . zijn . Dat lost uw opslagproblemen op. Wat betreft sorteren en filteren, dan worden sorteringen belangrijk zoals je zegt.

Afhankelijk van wat u met de gegevens doet en hoeveel kolommen u moet gebruiken voor filteren en sorteren en hoe u de bewerkingen uitvoert, is een manier om dit te doen met dynamische sql. Je kunt zoiets doen als

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

Dat is geen geweldige oplossing, maar het werkt wel. Je kunt de sortering ook na elk veld in een weergave gooien, dus zoals je al zei, dat is een optie. Zoiets als dit, en dan kun je het opvragen zonder sorteringen op te geven.

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

Dan kun je gewoon de juiste weergave kiezen om te gebruiken voor zoekopdrachten.



  1. Voorloop- en volgtekens verwijderen in SQL Server

  2. Het sterrenschema

  3. Hoe voer ik een samengevoegde query uit in de ZF-tabelleninterface?

  4. Volledige lijst met locaties in MySQL