sql-server - 在sql server中参数化全文查询

标签 sql-server full-text-search contains freetext

我在使用 sql server 全文功能时遇到问题。我正在将一些论坛软件转换为使用全文搜索,并且我已完成所有设置并正常工作。我的问题与全文查询有关。我设计了一些查询,当我使用 CONTAINS 谓词在 sql server management studio 中测试它们时,它们可以根据需要运行,以定位我的搜索结果,例如:

Select ....
From ..... 
WHERE Contains(p.Message,'" dog food "' ) ......

所以这运行得很好,但是我如何在准备好的语句中对其进行参数化?理想情况下,我希望能够使用 where 子句运行查询,例如:

Select ....
From ..... 
WHERE Contains(p.Message,'" @SearchTerm "' ) ...

甚至

WHERE Contains(p.Message,'"@SearchTerm" Near "@OtherSearchTerm" ) ...

但是由于双引号等原因,这种方法不起作用。我可以在代码中动态构建搜索词,但出于安全原因,我确实需要对所有用户输入使用参数。我查看了无数的谷歌结果试图找到解决方案,但找不到(当然这必须发生在每个人身上,或者我在这里错过了一些非常明显的东西和/或这是不可能的)。有任何想法吗?

最佳答案

创建一个带有参数的存储过程,例如:

CREATE PROCEDURE [sp_FullTextSearch] 
    @SearchTerm nvarchar(500)
AS
BEGIN
    Select ....
    From ..... 
    WHERE Contains(p.Message, @SearchTerm)
END

然后从您的代码中调用它。

HOW TO: Call SQL Server Stored Procedures in ASP.NET by Using Visual C# .NET

关于sql-server - 在sql server中参数化全文查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5795342/

相关文章:

sql-server - 创建表时的条件

MySQL全文搜索查询匹配所有单词仍然返回部分匹配

MySQL 文本索引,无停用词或最小字长

Java 数组列表 : contains() method returns false when arraylist contains the given object

java - Android,Java 只从字符串数组中获取最后一个字

sql-server - sql server sp_send_dbmail

sql - 在 SQL "IN"子句中使用元组

python - 使用 PostgreSQL 索引的 Django 全文搜索

javascript - 使用正则表达式的URL “starts with”?

Sql Select 使用 CTE 对递归数据进行排序