Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Sql server 在sql server中使用contains()_Sql Server_Full Text Search - Fatal编程技术网

Sql server 在sql server中使用contains()

Sql server 在sql server中使用contains(),sql-server,full-text-search,Sql Server,Full Text Search,我有一个表名Product包含3列,如下所示: Product-id name Price 在name列中,显示所有产品名称 示例:1340 GPS、1340T GPS等 当我写作时 select top 10 * from product where contains(name,'1340'); 结果1行1340 GPS 但当我搜索时 select top 10 * from product where name like '%1340%'; 然后结果是1340 GPS和1340T GP

我有一个表名
Product
包含3列,如下所示:

Product-id
name
Price
name
列中,显示所有产品名称

示例:1340 GPS、1340T GPS等

当我写作时

select top 10 * from product where contains(name,'1340');
结果1行
1340 GPS

但当我搜索时

select top 10 * from product where name like '%1340%';
然后结果是
1340 GPS和1340T GPS

实际上,我的要求是我将使用
contains()
,但它必须像
like
操作符一样显示这两行

如何做到这一点:

请帮忙


提前感谢

这里有一个简单的方法。在包含与like运算符相同的语法之前,可以使用“*”。但是您需要在搜索字符串前后使用双引号。检查以下查询:

SELECT *
FROM product
WHERE CONTAINS(name,'"*1340*"');

这肯定会奏效的

选择*from product where FREETEXT(product.,““1340”)

你为什么坚持使用
contains()
?我需要全文搜索是否有任何方法可以解决上述问题或其不可能?我正在使用上述查询搜索产品。如果我使用like运算符,它将花费比contains()更多的时间,而且我需要全文搜索。因此,我需要contains()作为我的观点。我在查询中使用了内部联接和其他联接的数量。有没有其他方法可以解决这个问题呢?我们不需要在全文搜索中使用*。只需注意:你不能用Contains做前缀*。它只在本例中起作用,因为1340是单词的开头。例如,如果它是T1340,这将不起作用