2010-03-26 57 views
51

我有一個mysql表,它有一個將xml存儲爲字符串的列。我需要找到xml列包含給定的6個字符的字符串的所有元組。沒有其他事情 - 我需要知道的只是這6個字符串是否存在。在MySQL中的文本列中搜索字符串

所以它可能沒關係,文本被格式化爲XML。

問題:如何在mysql中搜索? ie SELECT * FROM items WHERE items.xml [contains the text '123456']

有沒有辦法可以使用LIKE運算符來做到這一點?

+0

請參閱:http://winashwin.wordpress.com/2012/08/28/mysql-search/ – 2012-08-30 09:25:45

回答

78

你也許可以使用LIKE clause做一些簡單的字符串匹配:

SELECT * FROM items WHERE items.xml LIKE '%123456%' 

如果您需要更高級的功能,看看MySQL的全文搜索功能在這裏:http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

+1

..我將如何修改這與PHP查詢一起使用?我有一個字符串'$ message',我想選擇具有該字符串的行。我有'SELECT * FROM消息WHERE from_id ='$ fromID'和to_id ='$ toID'並且消息LIKE'$ message''但我認爲這不起作用 – Hristo 2010-06-30 15:32:06

5
SELECT * FROM items WHERE `items.xml` LIKE '%123456%' 

%運營商LIKE的意思是 「什麼都可以在這裏」。

2

你的意思是:

SELECT * FROM items WHERE items.xml LIKE '%123456%' 
+5

您是否錯過了LIKE? – alex 2010-03-26 21:17:50

+0

已提交編輯...他有一個缺少LIKE – 2013-12-23 12:59:39

2

爲什麼不使用什麼樣的?

SELECT * FROM items WHERE items.xml LIKE '%123456%' 
7

使用like可能需要更長時間,因此請使用full_text_search

Select * from items where match(items.xml) against ('your_search_word') 
+8

這是否證明比LIKE更快? – 2013-04-03 18:48:16