想象一个表(table1)包含一列(column1)和一条记录,其值为'roll-over'。然后,使用以下SQL查询,您将不会获得任何记录。
select * from table1 where contains(column1, ' "roll-over" ')
有没有办法在搜索文本中转义连字符?到目前为止,我还没有尝试成功(我已经尝试了所有下面的转义,但是都没有成功)。
select * from table1 where contains(column1, ' "roll\-over" ')
select * from table1 where contains(column1, ' "roll!-over" ')
select * from table1 where contains(column1, ' "roll[-]over" ')
另外,请注意,我的应用程序无法使用LIKE关键字,因为我利用了全文搜索索引。
最佳答案
看来您可能无法执行此操作。阅读本文:
https://support.microsoft.com/en-us/help/200043/prb-dashes---ignored-in-search-with-sql-full-text-and-msidxs-queries
他们建议仅搜索字母数字值(lame)或使用LIKE子句(不适用于您的选项)。
关于sql - T-SQL使用带有连字符的CONTAINS谓词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6930726/