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

Oracleで小文字を含む行を見つける4つの方法

    OracleDatabaseで小文字を含む行を返すための4つのオプションを次に示します。

    サンプルデータ

    次のデータを含むテーブルがあるとします。

    SELECT c1 FROM t1;

    結果:

    CAFÉ
    Café
    café
    1café
    eCafé
    James Bond 007
    JB 007
    007
    É
    É 123
    é
    é 123
    ø
    Ø

    次のメソッドを使用して、大文字を含む行を返すことができます。

    オプション1:POSIX文字クラスと比較する

    OracleのREGEXP_LIKE 条件は、POSIX正規表現標準およびUnicode正規表現ガイドラインに準拠しています。したがって、[:lower:]を使用できます 小文字をチェックするPOSIX文字クラス:

    SELECT c1 FROM t1
    WHERE REGEXP_LIKE(c1, '[[:lower:]]');

    結果:

    Café
    café
    1café
    eCafé
    James Bond 007
    é
    é 123
    ø

    オプション2:UPPER()と比較する 文字列

    UPPER()を使用できます 元の値を同等の大文字と比較する関数:

    SELECT c1 FROM t1
    WHERE UPPER(c1) <> c1;

    結果:

    Café
    café
    1café
    eCafé
    James Bond 007
    é
    é 123
    ø

    等しくない(<>を使用する )演算子(代わりに!=を使用できます <>の代わりに 必要に応じて)、大文字とは異なる行のみを返します。これを行う理由は、値が同等の大文字と同じである場合、そもそもすでに大文字であるためです(そして、それを返したくないのです)。

    デフォルトでは、Oracleは大文字と小文字を区別する検索を実行するため、大文字と小文字を区別するためにクエリに対して他に何もする必要はありません。

    オプション3:実際のキャラクターと比較する

    もう1つのオプションは、REGEXP_LIKEを使用することです。 照合する各小文字を明示的に含む正規表現パターンの条件:

    SELECT c1 FROM t1
    WHERE REGEXP_LIKE(c1, '[abcdefghijklmnopqrstuvwxyz]', 'c');

    結果:

    Café
    café
    1café
    eCafé
    James Bond 007

    'c' 決定された条件の照合で大文字と小文字が区別されない、またはアクセントが区別されない場合でも、大文字と小文字を区別し、アクセントを区別するマッチングを指定します。

    今回は、前の例よりも少ない行が返されます。これは、éのような文字を指定しなかったためです。 およびø 、これらの例で返されました。結果には éが含まれています ただし、その行が返されたのは、する他の小文字も含まれているためです。 一致します。

    したがって、このオプションを使用する場合は、すべての有効な文字がカバーされていることを確認する必要があります。

    ここでも、これら2つの文字が含まれています:

    SELECT c1 FROM t1
    WHERE REGEXP_LIKE(c1, '[éøabcdefghijklmnopqrstuvwxyz]', 'c');

    結果:

    Café
    café
    1café
    eCafé
    James Bond 007
    é
    é 123
    ø

    オプション4:文字の範囲と比較する

    もう1つの方法は、一致させる大文字の範囲を指定することです。

    SELECT c1 FROM t1
    WHERE REGEXP_LIKE(c1, '[a-z]', 'c');

    結果:

    Café
    café
    1café
    eCafé
    James Bond 007

    1. MySQLクエリをスケジュールする方法は?

    2. HerokuPGダンプをローカルマシンにインポートする方法

    3. pg-promiseでのクエリタイムアウト

    4. MicrosoftAccessのデザインビューでテーブルを開く方法