2009-07-02 6 views
0

REGEXPをMySQL DB内で検索していますが、'(アポストロフィ)と-(ダッシュ)を挿入すると、検索クエリでREGEXPがmysqlの '(アポストロフィ)と - (ダッシュ)で動作しません。

これに解決策はありますか?ここで

がいっぱいクエリです:

select * from table where (field REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' or field2 REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO') 
+0

使用しているRegExpを教えてもらえますか? – Greg

+0

は何を言っているのか理解できません。 – Avinash

+0

一致させたい文字列の例をいくつか教えてください。 –

答えて

0

あなたは角括弧内の文字を入れましたか?

select * from Table where Field regexp '[\'-]' 
+0

私はこの括弧を入れなければならないことを教えてくださいできますか? 私のregexpリンクthis REGEXP 'text |テキスト|^text '上記のコメントテキストに含まれている場合は – Avinash

+0

が含まれています'または - 動作しません。 – Avinash

+0

@Avinash:質問全体をクエリに含めてください。 –

1

REGEXP文字列区切り文字がシングルクォーテーションの場合、その文字列内でエスケープします。また、ビジネスロジックとテーブル構造に応じて、次の文を凝縮するCONCATを行うことができ:

SELECT field1, field2 
WHERE CONCAT(field1, field2) REGEXP 'Mary\'s Restaurant' 

あなたはそれをエスケープするか、最初の項目で作るのいずれか、文字クラス内のダッシュを使用している場合クラスなので、エンジンを使用すると、範囲を指定しようとしているとは思いません。

... REGEXP 'Mary\'s[- _]Restaurant' 

あなたはサンディエゴの例を使用している場合は、単語の境界を使用してREGEXPを削減することができるかもしれない:

SELECT field1, field2 
WHERE CONCAT(field1, field2) REGEXP '[[:<:]]SAN DIEGO[[:>:]]' 

参照:MySQL 5.1 REGEXP Manual

関連する問題