我有一个非常简单的LIKE搜索MySQL,我想转换成全文。问题是我需要能够实现它,以便它以X开头。如下例所示:
SELECT column FROM table WHERE column LIKE "startswith%"
正如您所看到的那样,查询将返回以“startswith”开头的所有结果。我需要用全文来做这件事。
这可能吗?
不,这不是全文的工作原理(它实际上只是一个下面有松散词的列表,没有关于相对于字符串的位置的信息)但是没有理由不能将LIKE ...
作为额外的WHERE
子句。如果你没有在column
上获得另一个密钥,那么FULLTEXT仍然可以帮助获得更小的结果子集。如果你在column
上有一把钥匙,那么使用FULLTEXT是没用的。
您可以使用ADD INDEX (column(123));
(仅将前123个字符编入索引)在列的开头设置一个键。这也适用于text / blob列(在后一种情况下,它是你给出的二进制长度)。
我不确定MySQL,但在SQL Server中你可以将列转换为varchar
并对结果执行LIKE
,如下所示:
SELECT column FROM table WHERE CONVERT(varchar(255), column) LIKE 'startswidth%'
由于这是ANSI标准,我认为MySQL也会处理这个问题。