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

LIKEフィルターでアンダースコア文字を使用するとすべての結果が得られるのはなぜですか?

    WHEREを変更します このような状態:

    WHERE mycolumn LIKE '%\_%' ESCAPE '\'
    

    これは、Oracleがエスケープ文字をサポートする方法の1つです。ここでは、escapeを使用してエスケープ文字を定義します キーワード。詳細については、OracleDocsのこのリンクを参照してください。

    '_' および'%' LIKEのワイルドカードです SQLで操作されたステートメント。

    _ 文字は、(任意の)単一の文字の存在を探します。 columnName LIKE '_abc'で検索する場合 、'aabc'を持つ行の結果が表示されます 、'xabc''1abc''#abc' ただし、'abc'ではありません 、'abcc''xabcd' など。

    '%' 文字は、0個以上の文字を照合するために使用されます。つまり、columnName LIKE '%abc'で検索すると 、'abc'を使用すると結果が得られます 、'aabc''xyzabc' などですが、'xyzabcd'はありません 、'xabcdd' および'abc'で終わらないその他の文字列 。

    あなたの場合、'%_%'で検索しました 。これにより、その列に1つ以上の文字、つまり任意の文字が含まれるすべての行がその値として提供されます。これが、_がない場合でもすべての行を取得している理由です。 列の値で。



    1. sqliteLog 14:行でファイルを開くことができません

    2. 値で識別されるOracle12c

    3. 販売データベースを持つことの利点は何ですか?

    4. UTL_FILE.FREMOVE例:Oracleでファイルを削除する