Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中搜索文本列中的字符串_Mysql_Search_Sql Like - Fatal编程技术网

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

在MySQL中搜索文本列中的字符串,mysql,search,sql-like,Mysql,Search,Sql Like,我有一个mysql表,它有一列将xml存储为字符串。我需要找到xml列包含6个字符的给定字符串的所有元组。没什么别的事——我只需要知道这个6个字符的字符串是否存在 因此,将文本格式化为xml可能并不重要 问题:如何在mysql中搜索? 即 从items.xml[包含文本“123456”的items中选择* 有没有一种方法可以使用LIKE运算符来执行此操作 SELECT * FROM items WHERE `items.xml` LIKE '%123456%' %%运算符在LIKE中表示“这里

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

因此,将文本格式化为xml可能并不重要

问题:如何在mysql中搜索? 即
从items.xml[包含文本“123456”的items中选择*

有没有一种方法可以使用LIKE运算符来执行此操作

SELECT * FROM items WHERE `items.xml` LIKE '%123456%'
%%
运算符在
LIKE
中表示“这里可以有任何东西”。

您的意思是:

SELECT * FROM items WHERE items.xml LIKE '%123456%'
为什么不使用LIKE

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

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

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

如果您需要更高级的功能,请在此处查看MySQL的全文搜索功能:

使用like可能需要更长的时间,因此请使用全文搜索:


当您使用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);

.. 我将如何修改它以用于PHP查询?我有一个字符串
$message
,我想选择具有该字符串的行。我有
SELECT*FROM Messages,其中FROM_id='$fromID'和to_id='$toID'以及类似于'$message'
的消息,但我不认为这是有效的。如果
123456
是字符串的开头,那么它就不起作用了。timothymarois-%匹配零个或多个字符,因此如果所需字符串位于开头、结尾,或者你正在搜索的内容的中间。请参阅:您可能也应该这样做。请参阅:这被证明比LIKE更快吗?重要的是要注意,要实现这一点,需要在目标列上有
全文
索引。为了进一步扩展其他列,FTS与
LIKE
非常不同,后者将返回单词和短语的变体,而FTS不会。例如,
如“%123456%”
将返回带有
“0123456”、“123456”、“1234567”
等的结果。其中
对('123456')
只将结果作为单个词返回以匹配,如
“is 123456”、“123456”、“123456 is”
等,但找不到
“0123456”
“1234567”
。示例:这就是为什么FTS可以在更大的数据集上执行得更快,因为它不会执行类似于的
的全表扫描。
   $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);