MySQL:将“LIKE”搜索转换为全文?

时间:2011-06-07 21:00:50

标签: mysql search full-text-search transform sql-like

我有一个非常简单的LIKE搜索MySQL,我想转换成全文。问题是我需要能够实现它,以便它以X开头。如下例所示:

SELECT column FROM table WHERE column LIKE "startswith%"

正如您所看到的那样,查询将返回以“startswith”开头的所有结果。我需要用全文来做这件事。

这可能吗?

2 个答案:

答案 0 :(得分:2)

不,这不是全文的工作原理(它实际上只是一个下面有松散词的列表,没有关于相对于字符串的位置的信息)但是没有理由你不能将LIKE ...作为一个额外WHERE条款。如果您在column上没有其他密钥,FULLTEXT仍然可以帮助获得较小的结果子集。如果你column上有一个密钥,那么使用FULLTEXT是没用的。

您可以使用ADD INDEX (column(123));(仅对前123个字符编制索引)在列的开头设置一个键。这也适用于text / blob列(在后一种情况下,它是你给出的二进制长度)。

答案 1 :(得分:0)

我不确定MySQL,但在SQL Server中,您可以将列转换为varchar并对结果执行LIKE,如下所示:

SELECT column FROM table WHERE CONVERT(varchar(255), column) LIKE 'startswidth%'

由于这是ANSI标准,我认为MySQL也会处理这个问题。