在MySQL的文本列中搜索字符串

时间:2010-03-26 21:10:06

标签: mysql search sql-like

我有一个mysql表,它有一个将xml存储为字符串的列。我需要找到xml列包含6个字符的给定字符串的所有元组。没有其他事情 - 我需要知道的是这个6字符串是否存在。

因此,将文本格式化为xml可能无关紧要。

问题:如何在mysql中搜索? 即 SELECT * FROM items WHERE items.xml [contains the text '123456']

有没有办法可以使用LIKE运算符来执行此操作?

6 个答案:

答案 0 :(得分:96)

您可以使用LIKE clause进行一些简单的字符串匹配:

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

如果您需要更多高级功能,请在此处查看MySQL的全文搜索功能: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

答案 1 :(得分:10)

使用like可能需要更长时间,因此请使用 full_text_search

SELECT * FROM items WHERE MATCH(items.xml) AGAINST ('your_search_word')

答案 2 :(得分:6)

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

%中的LIKE运算符表示“任何东西都可以在这里”。

答案 3 :(得分:4)

为什么不使用LIKE?

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

答案 4 :(得分:2)

你的意思是:

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

答案 5 :(得分:0)

使用wordpress准备行时,上述解决方案不起作用。这是我使用的解决方案:

   $Table_Name    = $wpdb->prefix.'tablename';
   $SearchField = '%'. $YourVariable . '%';   
   $sql_query     = $wpdb->prepare("SELECT * FROM $Table_Name WHERE ColumnName LIKE %s", $SearchField) ;
 $rows = $wpdb->get_results($sql_query, ARRAY_A);