sql >> データベース >  >> RDS >> Sqlserver

多言語データの SQL サーバー照合

    まず、すべての列を nvarchar にする必要があります。 .これで、ストレージの問題が解決されます。並べ替えとフィルタリングに関しては、おっしゃる通り照合が重要になります。

    データで何をしているか、フィルタリングと並べ替えに使用する必要がある列の数、および操作をどのように行っているかに応じて、それを行う 1 つの方法は動的 SQL を使用することです。次のようなことができます

    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
    

    それは素晴らしい解決策ではありませんが、うまくいきます。ビュー内の任意のフィールドの後に照合をスローすることもできるため、前述のように、それはオプションです。このようなもので、照合順序を指定せずにクエリを実行できます。

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

    次に、クエリに使用する適切なビューを選択するだけです。



    1. 注意してください

    2. MySQL:入れ子集合は遅いですか?

    3. Android:phpを使用してmysqlに画像をアップロードする方法

    4. SQLクエリでメールアドレスの特定の文字を「*」に置き換える