10

列で「/」(スラッシュ) や「」(バック スラッシュ) などの特殊文字を使用できるテーブルがあります。

そのようなレコードをテーブルから検索しようとすると、それらを取得できません。

例: abc\def または abc/def

次のような検索クエリを生成しています。

select * from table1_1 where column10 like '%abc\def%'

0 行を返していますが、実際には返すべきレコードが 1 つあります。この場合、クエリをどのように記述すればよいでしょうか。

4

6 に答える 6

22
于 2015-02-03T23:35:21.063 に答える
1

MySQL v5.5 で試したところ、値のエスケープがLIKE機能しませんでした。数回試行した後、機能したのは正規表現でした(そして、そこでもエスケープする必要があり、さらに文字クラスで非表示にする必要がありました)。私は最終的に次のように動作するようになりました:

select * from table1_1 where column10 rlike 'abc[\\]def'

これらは機能しませんでした:

... column10 like '%abc\\def%'
... column10 like concat('%abc', char(92), 'def%')
... column10 rlike 'abc\\def'

これは、Oracle である PL/SQL としてもタグ付けされていることに注意してください。投稿したクエリは、Oracle 上でそのまま動作します。PL/SQLタグは間違っていますか?

于 2013-05-10T20:42:42.213 に答える