2011-10-13 38 views
1

我想查詢單個列(VARCHAR):SQL查詢(而不是句子)

樣本數據行:

1) The fox jumps like a foo on my bar 
2) Jumpers are not cool 
3) Apple introduced iJump 

我進入一個搜索標準一樣。 ..

我希望得到的一個結果:跳S,跳線,iJump (所以我不想完全行)

目前我使用MySQL(我接受建議,只要它是開源的)

+2

那裏有一個以上的'jump'的在發生什麼行? –

+1

什麼類型的SQL? SQL Server,MySQL,Oracle等...? –

+0

我建議閱讀[全文搜索](http://en.wikipedia.org/wiki/Full_text_search)。根據數據庫的不同,您可能已經擁有它的支持。 – Oded

回答

2

由於您使用的是MySQL,我可能會建議您查看LIB_MYSQLUDF_PREG

這個開源庫提供了額外的正則表達式功能,包括PREG_CAPTURE函數,它從字符串中提取正則表達式匹配。

使用此功能,您可以輕鬆地構建一個正則表達式返回喜歡你要找的比賽...東西:

\b\w*jump\w*\b 
1

得到任何一行搜索條件很簡單:

SELECT sentence 
FROM sentences 
WHERE sentence LIKE '%jump%' 

我可能會做的應用程序邏輯的休息,因爲這樣它在數據庫中不幫你的。另外,任何分割字符串和處理它的方法都可能是數據庫特定的,所以你需要說出你正在使用哪一個。

+0

和「LIKE'%jump'」找到跳轉,跳線。和「LIKE'跳'%'」來查找iJump和簡單的「LIKE'跳轉'」來查找跳轉,跳線,iJump:3但我推薦使用sphinx或lucene – TROODON