2013-12-11 82 views
1

我想用正則表達式在我的Db中搜索多個列。它的工作原理,但使用很多和/或陳述。我想知道是否可以使用這樣的東西;在MySQL中的多列REGEX搜索

​​

這不起作用,這是對語法的猜測,因爲我在網上搜索時找不到類似的東西。這是一個愚蠢的想法還是我錯過了一些非常簡單的事情?

+0

我認爲正確的關鍵詞是REGEXP不是正則表達式 – Jeribo

+0

全文搜索的叫法。 – Mihai

+0

是的,它是REGEXP。錯字。固定! – t1m0thy

回答

3

如果你想regexp搜索多個列中的值,那麼你可以這樣做:

SELECT * FROM table where CONCAT(col1, col2, col3) REGEXP 'search-pattern'; 
+0

好吧,關於使用CONCAT()的性能影響的任何想法?是不是慢了很多?這不是一個問題,但我在這裏學習! – t1m0thy

+0

性能將取決於您試圖連接多少列。除此之外,就像是在乾草堆裏找到一根針。所以速度會根據乾草堆的大小而變化很大。如果你有10列搜索,這比編寫OR條件更好。 – anubhava

2

MySQL的正則表達式的比較語法

expr REGEXP pattern_string 

你不能用IN使用它。你必須這樣做:

SELECT * FROM `table` WHERE 
col1 REGEXP 'regex' 
OR col2 REGEXP 'regex' 
OR col3 REGEXP 'regex' 

你也可以使用RLIKE - 它們是同義詞。

+0

謝謝,我就是這麼做的這只是一個主意! – t1m0thy