Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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
Sql 表达式中字段值的过滤器(有点绕错方向)_Sql_Sql Server 2008 - Fatal编程技术网

Sql 表达式中字段值的过滤器(有点绕错方向)

Sql 表达式中字段值的过滤器(有点绕错方向),sql,sql-server-2008,Sql,Sql Server 2008,我根据过滤器自动整理电子邮件;筛选标准位于SQL表中。到目前为止,这种方法非常有效,但前提是发件人的邮件地址与sql表中的地址完全相同 有些邮件发送者在每封邮件上使用不同的邮件地址,但总是有部分邮件地址相同(“@abc.com”) 因此,我只能将“@abc.com”作为标准输入到SQL表中,而从Access中,此SQL语句的工作方式就像一个符咒: SELECT MA_Index, beding_body, beding_subj, aktion, FROM Mail_Automatik _ w

我根据过滤器自动整理电子邮件;筛选标准位于SQL表中。到目前为止,这种方法非常有效,但前提是发件人的邮件地址与sql表中的地址完全相同

有些邮件发送者在每封邮件上使用不同的邮件地址,但总是有部分邮件地址相同(“@abc.com”)

因此,我只能将“@abc.com”作为标准输入到SQL表中,而从Access中,此SQL语句的工作方式就像一个符咒:

SELECT MA_Index, beding_body, beding_subj, aktion, FROM Mail_Automatik _ 
where (empfaenger = 'name_recipient' AND 'noreply-4689756@abc.com' like '*'&absender&'*');
但我的代码直接与sql Server对话,而sql Server不接受以下部分:

 like '*'&absender&'*'
现在我也试过了

LIKE '*' + absender + '*'
现在再也找不到错误了,但也没有结果(应该有结果的地方)

有什么想法吗


谢谢

您需要使用
+
进行T-Sql字符串连接,并使用“%”作为通配符来匹配任何字符串

尝试以下方法(如果要传递内联sql):

最好使用参数化查询来避免sql注入攻击,而不是将变量直接传递到sql server。特别是如果这些变量是用户类型的值

对于参数化查询:

"Select ... Where empfaenger = @name_recipient AND @email like '%' + absender + '%'"

然后将这些参数(
@name\u recipient
@email
)添加到命令对象。

我不确定您的设置。但是对于T-Sql字符串连接,您当然应该将
&
替换为
+
。i、 e.应该像
'*'+absender+'*'
谢谢-请看我上面的编辑,现在没有错误,但也没有结果。很抱歉,应该是
'%'+absender+'%'
,我的错。没有注意到
*
+1,尽管我不认为
absender
是一个参数。相反,该参数是
左侧的类似
,而
absender
可能只是正在搜索的一列,据我所知;这在没有用户交互的outlook vba代码中使用。因此,我认为这样做是可以的;另外,我不知道如何将参数放入代码中,所以我很高兴这已经启动并运行了。absender是列名,根据发件人的电子邮件地址进行测试。
"Select ... Where empfaenger = @name_recipient AND @email like '%' + absender + '%'"