Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Server-Sortierung für mehrsprachige Daten

Für den Anfang sollten alle Ihre Spalten nvarchar sein . Das kümmert sich um Ihre Speicherprobleme. Was das Sortieren und Filtern betrifft, dann werden Sortierungen wichtig, wie Sie sagen.

Abhängig davon, was Sie mit den Daten machen und wie viele Spalten Sie zum Filtern und Sortieren verwenden müssen und wie Sie die Operationen durchführen, ist eine Möglichkeit dies mit dynamischem SQL zu tun. Sie können so etwas tun wie

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

Das ist keine tolle Lösung, aber es funktioniert. Sie können die Sortierung auch nach jedem Feld in einer Ansicht werfen, also ist das, wie Sie bereits erwähnt haben, eine Option. Etwas in der Art, und dann können Sie es abfragen, ohne Sortierungen angeben zu müssen.

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

Dann könnten Sie einfach die richtige Ansicht für die Abfrage auswählen.