Sql 表达式中字段值的过滤器(有点绕错方向)
我根据过滤器自动整理电子邮件;筛选标准位于SQL表中。到目前为止,这种方法非常有效,但前提是发件人的邮件地址与sql表中的地址完全相同 有些邮件发送者在每封邮件上使用不同的邮件地址,但总是有部分邮件地址相同(“@abc.com”) 因此,我只能将“@abc.com”作为标准输入到SQL表中,而从Access中,此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
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 + '%'"