Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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
使用带连字符的CONTAINS谓词的T-SQL_Sql_Tsql_Sql Server 2008_Contains - Fatal编程技术网

使用带连字符的CONTAINS谓词的T-SQL

使用带连字符的CONTAINS谓词的T-SQL,sql,tsql,sql-server-2008,contains,Sql,Tsql,Sql Server 2008,Contains,设想一个表(table1),其中有一列(column1)和一条记录,其值为“rollover”。然后使用下面的SQL查询,您将不会得到任何记录 select * from table1 where contains(column1, ' "roll-over" ') 有没有办法在搜索文本中转义连字符?到目前为止,我还没有成功地尝试这一点(我尝试了下面所有的逃避都没有成功) 另外,请注意,对于我的应用程序,使用LIKE关键字是不可能的,因为我正在利用全文搜索索引。看起来您可能无法做到这一点。请阅

设想一个表(table1),其中有一列(column1)和一条记录,其值为“rollover”。然后使用下面的SQL查询,您将不会得到任何记录

select * from table1 where contains(column1, ' "roll-over" ')
有没有办法在搜索文本中转义连字符?到目前为止,我还没有成功地尝试这一点(我尝试了下面所有的逃避都没有成功)


另外,请注意,对于我的应用程序,使用LIKE关键字是不可能的,因为我正在利用全文搜索索引。

看起来您可能无法做到这一点。请阅读这篇文章:


他们建议只搜索字母数字值(lame)或使用LIKE子句(不是您的选项)。

部分解决方案:您可以通过使用
charindex
函数测试字符串是否包含字符,强制查询返回包含连字符(或任何字符)的记录,例如:

select * from table1 where contains(column1, ' "roll-over" ')
and charindex('-', column1) > 0

可能的复制品这似乎真的有问题。这甚至不起作用:选择1作为Id,“hello”roll over“world”作为测试中的SomeText在测试中创建唯一索引ui\u SPID(Id);默认创建全文目录ft;在测试(SomeText)键索引ui\u SPID上创建全文索引,STOPLIST=SYSTEM;选择*from test where contains(SomeText,'hello')下拉表测试下拉全文目录
select * from table1 where contains(column1, ' "roll-over" ')
and charindex('-', column1) > 0