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

SQL Server(T-SQL)で照合を見つける方法

    照合は、サーバーレベル、データベースレベル、列レベル、式レベル、および識別子レベルで指定できます。これらごとに異なる方法が必要です。

    サーバーレベルの照合

    サーバーレベルの照合を見つける方法は次のとおりです。

    SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
    

    これにより、次のような照合が返されます:

    Server Collation
    ----------------------------
    SQL_Latin1_General_CP1_CI_AS
    


    sp_helpsortを使用することもできます サーバーのデフォルトの照合を返すストアドプロシージャ:

    EXECUTE sp_helpsort;
    

    これにより、次のような照合が返されます:

    Server default collation
    ----------------------------
    Latin1-General, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive for Unicode Data, SQL Server Sort Order 52 on Code Page 1252 for non-Unicode Data
    

    データベースレベルの照合

    次のクエリを実行して、特定のデータベースの照合を返します。 WHERE 句を使用すると、関心のあるデータベースに結果を絞り込むことができます。

    SELECT 
        name, 
        collation_name 
    FROM sys.databases
    WHERE name = 'Music';
    

    これにより、次のようになります。

    name   collation_name              
    -----  ----------------------------
    Music  SQL_Latin1_General_CP1_CI_AS
    

    この場合、Musicというデータベースを指定しました 。

    DATABASEPROPERTYEX()を使用することもできます データベースのデフォルトの照合を返す関数:

    SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
    

    列レベルの照合

    照合は、列レベルで指定することもできます。特定の列が使用する照合を見つけるには、sys.columnsに対してクエリを実行します 。このように:

    SELECT 
        name, 
        collation_name 
    FROM sys.columns 
    WHERE name = N'ArtistName';
    

    これにより、次のようになります。

    name   collation_name              
    ----------  ----------------------------
    ArtistName  SQL_Latin1_General_CP1_CI_AS
    

    式と識別子レベルの照合

    文字列式に照合を適用して、照合キャストを適用できます。たとえば、COLLATEを使用できます SELECTの句 使用する照合を指定するステートメント。このように:

    USE Music;
    SELECT ArtistId, ArtistName
    FROM Artists
    ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
    

    その照合ではCIを使用します 大文字と小文字を区別しない場合、およびAI アクセントに影響されないようにします。

    これをCSに変更できます 大文字と小文字を区別する場合、およびAS アクセントに敏感な場合、クエリ結果は(データに応じて)異なる方法で並べ替えられる場合があります:

    USE Music;
    SELECT ArtistId, ArtistName
    FROM Artists
    ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
    

    したがって、これにより、クエリの実行時にデータベースまたは列レベルで適用される照合をオーバーライドできます。


    1. PostgreSql'PDOException'メッセージ'がドライバーを見つけられませんでした'

    2. postgresqlエラーPANIC:有効なチェックポイントレコードを見つけることができませんでした

    3. MySQLルートパスワードの変更とリセット

    4. Oracle:SQLサーバー用のプロファイラーのようなクエリをトレースするツールはありますか?