更新:我已经找到了一种使用动态sql形式解决此问题的方法,无论如何都要感谢任何帮助。
嗨,我需要使用全文索引来完成一些事情。就是这样:
问题的实际情况是,当我运行一个看起来像的查询(带有一个存储过程)时(带有一个明显在上面定义的参数(@name)(此处未显示),此参数被发送到存储过程通过asp.net页面,来自用户输入):
选择
名称
FROMdbo.UsersTable
WHERE
FREETEXT(姓名,@姓名)
嗯,事实是这样的查询会返回值,如果参数@ name的值是Joe,并且说有10条名字的记录,其中有Joe,但是@ name的值是只是Jo,然后它什么也没有返回,这就是问题所在。假设此表中还有其他记录中包含Jo,例如Jole或John。
所以真正的问题是,我如何让它返回不是完整单词或短语的值,而只是单词/短语的一部分(如上所述)?像FREETEXT(Name,@ name *)一样,不允许用作查询,但是,你明白了。
有没有办法实现这个目标?我敢肯定,我需要弄明白这一点。
感谢您的帮助。
答案 0 :(得分:2)
全文搜索确实应该用作基于整个单词的自然语言搜索,但是您可以使用CONTAINS
使用"Jo*"
来查找单词后缀(不是子字符串),格式为{{{ 1}}
SELECT Name FROM dbo.UsersTable WHERE CONTAINS(Name, '"' + @NAME + '*"')