使用带连字符的CONTAINS谓词的T-SQL
设想一个表(table1),其中有一列(column1)和一条记录,其值为“rollover”。然后使用下面的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关键字是不可能的,因为我正在利用全文搜索索引。看起来您可能无法做到这一点。请阅
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