2011-03-25 107 views
1

我有一個名爲table1的表,包含3列a,b和c。MySQL文本搜索示例

b是varchar(600),比方說,我希望返回int列a,說。

我們假設我要找的術語是「這個術語」。

單個完整的例子會如何與b上面的搜索此短語所需的基本語法相匹配,並返回MySQL中各自的a,因爲互聯網對此完全不清楚?

基本上,mysql_query字符串對於文本搜索來說會是什麼樣子?

+0

你在問[全文搜索](http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html)嗎? – 2011-03-25 21:03:59

+0

我不確定有什麼不同。對於初學者來說,mysql頁面非常難以閱讀。有什麼不同? – David19801 2011-03-25 21:05:47

+0

全文搜索涉及創建特殊的全文索引並使用適當的語法(MATCH)更有效地搜索文本。有關更多信息,請參閱我的第一條評論中的鏈接。 – 2011-03-25 21:09:44

回答

5

下面將尋找「這個詞」在B

SELECT a FROM table1 WHERE b LIKE('%This term%') 

任何地方你也可以只找到與「這個詞」開始記錄

SELECT a FROM table1 WHERE b LIKE('This term%') 

%運算符是通配符類似的情況。

+4

不需要括號 - LIKE是一個運算符,而不是函數。 – ThiefMaster 2011-03-25 21:03:28

+0

我認爲它使閱讀更容易,但你是正確的,你不需要它。 – 2011-03-25 21:04:22

6
$result = mysql_query("SELECT a FROM sometable WHERE b LIKE '%This term%'"); 

根據你打算做什麼,MySQL Fulltext Indices可能會對你有意思。

+0

+1因爲你是唯一一個到目前爲止誰發現這是MySQL和PHP :) – James 2011-03-25 21:04:20

+0

表名缺少在這裏或是否意味着缺席? – David19801 2011-03-25 21:25:54

2
SELECT * FROM table1 
WHERE b LIKE '%This term%' 
+0

你需要包含通配符,否則你寫的相當於'... WHERE b ='這個術語'' – 2011-03-25 21:06:05

+0

萬一如果「b」很大並且需要發現'This temp'的存在 - 我同意。 – 2011-03-25 21:08:56