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

SQLiteで大文字を含む行を見つける3つの方法

    SQLiteで大文字を含む行を返すための3つのオプションは次のとおりです。

    サンプルデータ

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

    .nullvalue null
    SELECT c1 FROM t1;

    結果:

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

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

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

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

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

    結果:

    c1            
    --------------
    CAFÉ          
    Café          
    eCafé         
    James Bond 007
    JB 007        

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

    SQLiteは大文字と小文字を区別して検索を実行するため、必要な結果を得るために他に何もする必要はありません。

    上記の例では、大文字のUnicode文字Éが返されないことに気付いたかもしれません。 およびØ 値に非Unicodeの大文字も含まれていない限り。 SQLiteはUnicode文字を完全にはサポートしていません。たとえば、LOWER() およびUPPER() 関数は、英語で使用される26文字の大文字小文字のマッピングのみを提供します。したがって、上記の例では、Unicode文字を同等の小文字に変換しませんでした。

    Unicode文字を操作する必要がある場合は、SQLiteICU拡張機能を確認してください。

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

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

    SELECT c1 FROM t1
    WHERE c1 REGEXP '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]';

    結果:

    c1            
    --------------
    CAFÉ          
    Café          
    eCafé         
    James Bond 007
    JB 007        

    必要に応じて、リストにUnicode文字を含めることができます:

    SELECT c1 FROM t1
    WHERE c1 REGEXP '[ÉØABCDEFGHIJKLMNOPQRSTUVWXYZ]';

    結果:

    c1            
    --------------
    CAFÉ          
    Café          
    eCafé         
    James Bond 007
    JB 007        
    É             
    É 123         
    Ø             

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

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

    SELECT c1 FROM t1
    WHERE c1 REGEXP '[A-Z]';

    結果:

    c1            
    --------------
    CAFÉ          
    Café          
    eCafé         
    James Bond 007
    JB 007        

    1. テーブル式の基礎、パート7 – CTE、最適化の考慮事項

    2. C#からSQL Serverを呼び出すときに、いつ再試行するか失敗するかを知っていますか?

    3. SQLステートメントはwhereパラメーターを無視しています

    4. RACデータベースの起動がエラーORA-12547で失敗する