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

SQL Server 2008 と Unicode 文字の比較

    さて、もう少し掘り下げてみると、これはほぼ確実に新しい文字によるものであることがわかります。これは、SQL Server 2008 のラテン照合に相当するものでも機能しますが、古いバージョンでは機能しないためです。つまり、Latin1_General_100_CI_AS で機能します。 、ただし Latin1_General_CI_AS ではありません .私が使用したこれらの文字列を正しく比較する照合の完全なリストを取得するには:

    IF OBJECT_ID('Tempdb..#T') IS NOT NULL
        DROP TABLE #T;
    IF OBJECT_ID('Tempdb..#V') IS NOT NULL
        DROP TABLE #V;
    
    CREATE TABLE #V (A NVARCHAR(50), B NVARCHAR(50));
    INSERT #V (A, B) VALUES (N'it᧠', N'it');
    
    CREATE TABLE #T (Collation VARCHAR(500), Match BIT);
    
    DECLARE @SQL NVARCHAR(MAX) = (SELECT N'INSERT #T (Collation, Match) 
                                            SELECT ''' + Name + ''', CASE WHEN A = B COLLATE ' + name + ' THEN 1 ELSE 0 END
                                            FROM    #V;'
                                    FROM sys.fn_helpcollations()
                                    FOR XML PATH(''), TYPE
                                ).value('.', 'NVARCHAR(MAX)');
    
    EXECUTE sp_executesql @SQL;
    
    SELECT  *
    FROM    #T
    WHERE   Match = 0;
    



    1. 結合されたテーブルでMAX&GROUPBYを使用するMySQLLEFT JOIN?

    2. ハロウィーンの問題–パート2

    3. SQLiteにデータを挿入する際の主キーの競合への対処

    4. SQLでカウント順に並べ替える方法は?