如何在 CONTAINS 子句中使用 SQL 参数?
How can I use SQL Parameters in a CONTAINS clause?
我想做类似的事情:
select * from MyValues
where CONTAINS(MyValues.Value, ' @p0 OR @p1 OR @p2 or @p3 ')
我通过 EF 的 SqlQuery() 方法发出查询,例如:
query = context.Database.SqlQuery<MyResult>(@"select * from MyValues
where CONTAINS(MyValues.Value, '@p0 OR @p1 OR @p2 OR @p3')",
new SqlParameter("@p0", "Cat"),
new SqlParameter("@p1", "Green"),
new SqlParameter("@p2", "Red"),
new SqlParameter("@p3", "Dog"));
命令运行良好,没有异常,但我没有收到任何结果。当我手动使用字符串代替参数时,我得到了预期的结果。我尝试了各种引号形式和组合,但都无济于事。
CONTAINS 表达式中是否允许 SQL 参数?
谢谢!
因为CONTAINS
函数使用单个字符串,我不相信您可以使用参数。但是,您可以尝试构建完整的字符串并将其作为单个参数传递。只要您构建的字符串作为参数传入,我相信您将避免任何可能的 SQL 注入问题。
也许你可以试试这个。
query = context.Database.SqlQuery<MyResult>(@"select * from MyValues)
使用以下查询获得 list.filter 后。
首先将所有参数放入一个字符串数组中。
string[] paramValues= [p1,p2,p3,p4]
var results=query.where(r=> paramValues.Contains(r.Value));
注意:如果你的结果集是 huge.it 将所有结果都 return 到前端并做 filter.in 大多数情况你有其他的不是一个好主意筛选条件。
我想做类似的事情:
select * from MyValues
where CONTAINS(MyValues.Value, ' @p0 OR @p1 OR @p2 or @p3 ')
我通过 EF 的 SqlQuery() 方法发出查询,例如:
query = context.Database.SqlQuery<MyResult>(@"select * from MyValues
where CONTAINS(MyValues.Value, '@p0 OR @p1 OR @p2 OR @p3')",
new SqlParameter("@p0", "Cat"),
new SqlParameter("@p1", "Green"),
new SqlParameter("@p2", "Red"),
new SqlParameter("@p3", "Dog"));
命令运行良好,没有异常,但我没有收到任何结果。当我手动使用字符串代替参数时,我得到了预期的结果。我尝试了各种引号形式和组合,但都无济于事。
CONTAINS 表达式中是否允许 SQL 参数?
谢谢!
因为CONTAINS
函数使用单个字符串,我不相信您可以使用参数。但是,您可以尝试构建完整的字符串并将其作为单个参数传递。只要您构建的字符串作为参数传入,我相信您将避免任何可能的 SQL 注入问题。
也许你可以试试这个。
query = context.Database.SqlQuery<MyResult>(@"select * from MyValues)
使用以下查询获得 list.filter 后。 首先将所有参数放入一个字符串数组中。
string[] paramValues= [p1,p2,p3,p4]
var results=query.where(r=> paramValues.Contains(r.Value));
注意:如果你的结果集是 huge.it 将所有结果都 return 到前端并做 filter.in 大多数情况你有其他的不是一个好主意筛选条件。