2009-07-02 60 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 2009-07-02 13:20:13

+0

不明白你想說什麼? – Avinash 2009-07-02 13:33:16

回答

0

你把字符方括號裏面?試試這樣的:

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

如果您的REGEXP字符串分隔符是單引號,請在字符串內轉義它們。另外,根據你的業務邏輯和表的結構,你可以做一個CONCAT凝結聲明:

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

如果您使用的是字符類中的破折號,要麼逃避它或使其中的第一項類,所以發動機不認爲你要指定一個範圍:如果您使用的是聖地亞哥例如,您可能能夠通過使用單詞邊界,以減少REGEXP

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

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

請參閱:MySQL 5.1 REGEXP Manual