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

LIKE 演算子は MSSQL Server で大文字と小文字を区別しますか?

    大文字と小文字が区別されるのは演算子ではなく、列自体です。

    SQL Server のインストールが実行されると、インスタンスに対して既定の照合が選択されます。特に明記されていない限り (以下の collat​​e 句を確認してください)、新しいデータベースが作成されると、インスタンスから照合が継承され、新しい列が作成されると、それが属するデータベースから照合が継承されます。

    sql_latin1_general_cp1_ci_as のような照合 列の内容をどのように処理するかを指定します。 CI は大文字と小文字を区別せず、AS はアクセントを区別することを表します。

    照合順序の完全なリストは、https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

    (a) インスタンスの照合を確認するには

    select serverproperty('collation')
    

    (b) データベースの照合順序を確認するには

    select databasepropertyex('databasename', 'collation') sqlcollation
    

    (c) 別の照合を使用してデータベースを作成するには

    create database exampledatabase
    collate sql_latin1_general_cp1_cs_as 
    

    (d) 別の照合を使用して列を作成するには

    create table exampletable (
        examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null
    )
    

    (e) 列の照合順序を変更するには

    alter table exampletable
    alter column examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null
    

    インスタンスとデータベースの照合順序を変更することは可能ですが、以前に作成されたオブジェクトには影響しません。

    文字列の比較のために列の照合順序をオンザフライで変更することもできますが、これは非常にコストがかかるため、本番環境ではお勧めできません。

    select
      column1 collate sql_latin1_general_cp1_ci_as as column1
    from table1
    


    1. ORACLE12.2.01類似した名前の異なるテーブルから列を選択->使用される内部列識別子

    2. ストアドプロシージャNJS-012の実行時にnode-oracledbエラーが発生しました

    3. SQL Server:暗号化された列へのアクセスを dba からでも制限する方法は?

    4. PostgreSQL文字列エスケープ設定