私は、Oracleでのフィルタのパフォーマンスは、あなたがそうリテラルLIKE検索の文字列をエスケープする関数はありますか?
WHERE col LIKE 'abc%'
または
WHERE SUBSTR(col,1,3) = 'abc'
を書くかどうかに応じて非常に異なることができることに気づいた、私はいつも、クエリように使用したいと思います。しかし、私の接頭辞は任意のASCII文字を含むことができるので、%
、_
、およびエスケープ文字自体をエスケープする必要があります。
私はそのような何かのためにREGEXP_REPLACEを使用することができます。私もトリプルをREPLACEんでした
WHERE col LIKE REGEXP_REPLACE(pat, '([%_\\])', '\\\1') || '%' ESCAPE '\'
:
WHERE col LIKE REPLACE(REPLACE(REPLACE(pat,'\','\\'),'%','\%'),'_','\_') || '%' ESCAPE '\'
どちらの方法は、男にとって苦痛です後でそれを読むだろう。 WHERE begins_with(col, pat) > 0
、またはWHERE col LIKE like_literal(pat) || '%'
という形式の代替機能がありますか、それとも自分で書き込む必要がありますか?
をお読みください 'pat'はどこか別の場所から来ているようです。クエリに渡す前に変更します。 –