2011-09-09 53 views
3

我想執行MySQL正則表達式,它將檢查字符串的單數和複數版本的字符串。正則表達式添加/刪除主題

我忽略了特殊字符和複雜的語法規則,只是想添加或刪除's'。

例如,如果用戶輸入'鞋',它應該返回'鞋'和'鞋'的匹配。相反,如果用戶輸入「鞋」,則應該爲「鞋」和「鞋」返回匹配。

我能夠選擇性地檢查對本場比賽的複數形式如下:

WHERE Store.tags RLIKE ('(^|,)+[[:space:]]*shoe(s)*[[:space:]]*(,|$)+') 

我一直在閱讀了關於正/負前瞻或查找後面,我似乎被不斷追我的尾巴。

+0

查看http://stackoverflow.com/questions/3088433/sql-plural-singular-searches –

+0

不幸的是,我不能使用FULLTEXT匹配,因爲必須匹配逗號分隔的標籤列表中的字符串。另外,我也不會使用規範化。 – Richard

+4

噢,這就是爲什麼在關係數據庫中存儲以逗號分隔的任何東西的列表這樣一個壞主意:)您是否考慮過使用您的主機語言(Java,PHP或其他)來預先計算單數/複數形式然後使用更簡單的搜索表達式?你甚至可以使用簡單的'LIKE'子句! –

回答

0

好吧,如果你只是詢問刪除或添加一個s ...讓它簡單你的要求......

..只是檢查,如果最後一個字母是S,如果是 - >刪除它奇異的,如果沒有,添加一個用於複數

WHERE (a LIKE '%shoes%' OR a LIKE '%shoe%') 

這是因爲愚蠢,因爲它得到,但看到你只需要檢查秒。這是不夠好。