2011-07-14 29 views
1

ハイフン文字を許可するはずのOracle上で実行するクエリがあります。ハイフン文字を含むOracleクエリ文字列

SELECT <field> 
    FROM <table> 
WHERE LOWER(field) LIKE '%-pa%'; 

結果はしかし、「ウェブページ」、「ウェブ-page」だけでなく、「Webページ」を表示し、次のような結果は、ハイフン文字を含む正確な文字列に一致するようになっています。しかし、私はこの場合「ウェブページ」と「ウェブページ」を探したいだけです。ハイフン文字をバックスラッシュでエスケープしようとしましたが、結果としてレコードが見つかりませんでした。誰でも私にこの仕事をする方法のヒントを教えてもらえますか?

+0

どのバージョンまたはOracleですか? [10g +正規表現をサポート](http://psoug.org/reference/regexp.html) –

答えて

1

を使用することができますハイフン。私が見ているものの簡単なサンプルは次のとおりです。

SQL> select * from fb; 

ID 
---------- 
Web-Page 
Web Page 
Web -Page 

SQL> select * from fb where lower(id) like '%-pa%'; 

ID 
---------- 
Web-Page 
Web -Page 

ハイフンの代わりにアンダースコアを使用していませんか?アンダースコアは1文字のワイルドカードです。

+0

気にしないでください。私の責任です。私は私のサンプルクエリを簡素化しましたが、別の列でクエリを実行していました。 –

0

Normalyハイフンをエスケープする必要はありませんが、あなたは代わりに「X」の

select <field> from <table> where lower(field) like '%X-pa%' escape 'X'; 

を試すことができ、あなたはどのようにOracleの扱いの私の観察ではありません任意の文字

関連する問題