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

PostgreSQLアクセント+大文字と小文字を区別しない検索

    「大文字と小文字を区別しない」と組み合わせる必要がある場合は、正確な要件に応じて、いくつかのオプションがあります。

    最も単純な場合は、式のインデックスで大文字と小文字を区別しないようにします。

    関数f_unaccent()に基づいて構築 参照された回答に記載されています:

    • PostgreSQLは「アクセントに依存しない」照合をサポートしていますか?
    CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));

    次に:

    SELECT *
    FROM   users
    WHERE  lower(f_unaccent(name)) = lower(f_unaccent('João'));
    

    または lower()を作成できます 関数f_unaccent()に 、f_lower_unaccent()のようなものを導出するには 。

    または (特にファジーパターンマッチングを行う必要がある場合)追加モジュール pg_trgmによって提供されるトリグラムインデックスを使用できます。 ILIKEもサポートする上記の関数に基づいて構築 。詳細:

    • LOWER LIKE vs iLIKE

    参照された回答にメモを追加しました。

    または 追加のモジュールcitextを使用できます :

    • 延期可能で大文字と小文字を区別しない一意性制約


    1. Oracleで列のデータ型を確認する3つの方法

    2. T-SQLを使用してリンクサーバー上にテーブルを作成する2つの方法

    3. mysqlでunionとorderby句を使用する

    4. ループのないセットまたはシーケンスを生成する–パート1