我有一张表格,其中包括" F-10"或者" Jim-beam"。如果用户搜索过,那么有没有办法让我得到这些结果" F10"或者" Jimbeam"?基本上,用户可能不知道条目中有短划线,但我希望搜索能够容易找到它。
现在我正在尝试使用:
SELECT *
WHERE
CONTAINS(table.*, ,'"F10*" Or "Jimbeam*"')
答案 0 :(得分:0)
您可以创建数组以从用户
获取插入的值然后对数组
中的每个值使用类似%value1%或类似%value2%它可能是一个解决方案
答案 1 :(得分:0)
您可以尝试使用不包含任何特殊字符的值替换数据库中的值。我之前使用过这个答案中描述的功能:https://stackoverflow.com/a/1008566/894974 因此,安装该函数后,您的where子句将变为:
where dbo.RemoveNonAlphaCharacters([columnToSearch]) like '%'+@searchString+'%'
答案 2 :(得分:0)
您可以创建一个单独的列,从这些单词中删除短划线,然后针对该列执行全文搜索。
例如,您的表格看起来像这样(或者新列可能是新表格的一部分):
Id Text TextForFullTextSearch
-----------------------------------------
1 Jim-beam Jimbeam
2 F-10 F10
3 blah blah blah blah
如果您需要支持"Jimbeam*"
和"Jim-beam*"
上的搜索,那么您可以针对旧列和新列执行全文搜索。
这确实需要您将文本存储两次,以便您的流程中有更多的齿轮。这样做的好处在于搜索的准确性和性能(LIKE会慢得多),因此您必须权衡这些优势与增加的复杂性。
插入并更新了将新列填充为数据的一些想法: