Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.Net中使用类似术语的SQL参数_C#_.net_Sql_Sqlparameter - Fatal编程技术网

C# 在.Net中使用类似术语的SQL参数

C# 在.Net中使用类似术语的SQL参数,c#,.net,sql,sqlparameter,C#,.net,Sql,Sqlparameter,我有一个非常复杂的查询,并且正在修复我的相似项(我将其作为一个单独的db表,并将它们加载到搜索查询中),但是当我参数化它时,我的查询会给出不同的结果 因此,旧查询有一个类似的部分,如下所示: ((v.title = ''BA'') OR (vs.label = ''BA'') OR (v.title LIKE ''BA %'') OR (vs.label LIKE ''BA %'')) ... 我将其替换为如下内容(带有参数): 我的参数添加如下: string key = "ba"; s

我有一个非常复杂的查询,并且正在修复我的相似项(我将其作为一个单独的db表,并将它们加载到搜索查询中),但是当我参数化它时,我的查询会给出不同的结果

因此,旧查询有一个类似的部分,如下所示:

((v.title = ''BA'') OR (vs.label = ''BA'') OR 
(v.title LIKE ''BA %'') OR (vs.label LIKE ''BA %''))
...
我将其替换为如下内容(带有参数):

我的参数添加如下:

string key = "ba"; 
string val = "ba";

parameters.Add("@" + key + "none", val);
parameters.Add("@" + key + "right",  val + " %");

这两个问题相等吗?我遗漏了什么吗?

前两个或多个案例没有存在的理由。如果只使用类似的案例,您将捕获相同的记录。例如:

(
  (v.title = @banone) OR (vs.label = @banone) OR 
  (v.title LIKE @banone + ' %') OR (vs.label LIKE @banone + ' %')
)
...
@banone=N'BA'
...
(v.title如@banone+'%')或(v.label如@banone+'%'))

在哪里@banone='BA'


我认为你的参数添加代码是不对的

参数。添加(“@”+key+“right”,val+“%”)

应该是
parameters.AddWithValue(“@”+键+“右”,val+“%”)

有两件事需要注意。首先,我删除了百分号之前的空格。其次,我使用AddWithValue而不是普通的Add

现在的问题是这个空间是否重要。回顾您的原始查询,搜索
title='BA'或类似于'BA%'的title实际上会忽略title值为BAT的内容,例如,会拾取类似于BA的标题


您可能希望发布正在处理的数据和收到的结果。

您是否测试了它们是否相等?您是否真的在查询后设置了变量,或者这就是您发布数据的方式?该片段来自sql profiler以及db如何看待它,但在理论上,上述参数不应该相等吗?第二个参数不应该是
@baright=N''BA%'
,这样
就可以正常工作了吗?
(
  (v.title = @banone) OR (vs.label = @banone) OR 
  (v.title LIKE @banone + ' %') OR (vs.label LIKE @banone + ' %')
)
...
@banone=N'BA'
...