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

配列でのPostgreSQLの大文字と小文字を区別しないSELECT

    言及されていない代替案の1つは、 citextをインストールすることです。 拡張機能 これはPostgreSQL8.4以降に付属しており、citextの配列を使用します :

    regress=# CREATE EXTENSION citext;
    regress=# SELECT 'foo' = ANY( '{"Foo","bar","bAz"}'::citext[] );
     ?column? 
    ----------
     t
    (1 row)
    

    これについて厳密に修正し、拡張を避けたい場合は、かなり醜いサブクエリ> Pgには多くの豊富な配列操作、特に機能マッピング操作がないためです。次のようなもの:

    SELECT array_agg(lower(($1)[n])) FROM generate_subscripts($1,1) n;
    

    ...ここで、$1は配列パラメーターです。あなたの場合、配列の順序を維持する必要がないので、少しごまかすことができると思います。そのため、次のようなことができます。

    SELECT 'foo' IN (SELECT lower(x) FROM unnest('{"Foo","bar","bAz"}'::text[]) x);
    


    1. SQLServer-行をコンマ区切りのリストに結合します

    2. MariaDB ROW_COUNT()の説明

    3. コミットされた読み取りと繰り返し可能な読み取りの違い

    4. OracleのCheckステートメントでのサブクエリの使用