2013-10-01 70 views
0

希望你做得很好查詢的確切詞搜索

我有很努力的時間編寫查詢

這裏是我的問題解釋

我有一個數據庫表說:「jreviews_content」這有一個名爲「jr_produits」的字段

在「jr_produits」中的數據是格式* ryan-decosta * tom-gosling *所以我想要一個搜索查詢, mysql不應該返回任何東西 但如果用戶類型瑞安那麼它應該返回該行同樣,如果用戶鍵入「GOS」 MySQL的應該不返回任何 但如果用戶類型小鵝那麼它應該返回該行,其中瑞安和小鵝是準確的話

是我寫的查詢是

SELECT * 
FROM `jreviews_content` 
WHERE jr_produits LIKE '%*ryan-%' or jr_produits LIKE '%-ryan*%' 
or jr_produits LIKE '%*ryan*%' or jr_produits LIKE '%-ryan-%'; 

我想,要在這樣效率更高一些其他的方式來完成(通過正則表達式或任何其他方法)

SELECT * FROM `jreviews_content` WHERE jr_produits REGEXP '^[*-]ryan[*-]$' 

這DOEN」 t取東西

同樣沒有

SELECT * FROM `jreviews_content` WHERE jr_produits like '%[*-]ryan[*-]%' 

請建議一些

+1

更改數據庫模式,不要試圖讓每個記錄中自定義表! – user1032531

回答

1

嘗試MySQL的正則表達式字界碑。他們記錄的約一半,this page

SELECT * 
FROM jreviews_content 
WHERE jr_produits REGEXP '[[:<:]]ryan[[:>:]]' 

請注意,我沒有今天的MySQL訪問,所以這是未經測試。

而且聽什麼@ user1032531說。與像*ryan-decosta*tom-gosling*值的記錄幾乎總是意味着「糟糕的設計」。

+0

作品像一個魅力 –

+0

可以請你解釋你寫的正則表達式 –

+0

這不是我的表結構我使用的是Joomla的JReviews組件,它具有這種結構來存儲產品 –