Đối với người mới bắt đầu, bạn sẽ muốn tất cả các cột của mình là nvarchar
. Điều đó sẽ giải quyết các vấn đề lưu trữ của bạn. Đối với việc sắp xếp và lọc, thì các đối chiếu trở nên quan trọng như bạn nói.
Tùy thuộc vào những gì bạn đang làm với dữ liệu và số lượng cột bạn cần sử dụng để lọc và sắp xếp cũng như cách bạn thực hiện các thao tác, một cách để làm điều đó là sử dụng sql động. Bạn có thể làm điều gì đó như
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
Đó không phải là một giải pháp tuyệt vời, nhưng nó hoạt động. Bạn cũng có thể ném đối chiếu sau bất kỳ trường nào trong một chế độ xem, vì vậy, như bạn đã đề cập, đó là một tùy chọn. Một cái gì đó như thế này, và sau đó bạn có thể truy vấn nó mà không cần phải chỉ định đối chiếu.
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...
Sau đó, bạn có thể sử dụng chỉ cần chọn chế độ xem phù hợp để sử dụng cho việc truy vấn.