如何使用多个"喜欢"和"和"

eMR*_*MRe 0 sql sql-server

我不能以我想要的方式获得这个SQL查询.我试图匹配使用"喜欢"和"和"的记录,但我没有得到任何结果.当我将其更改为"或"时,我得到了结果.

为什么我使用时没有得到任何结果?

SELECT   a.MOD_REQ_NUM,
         a.REFERENCE_CODE,
         a.REFERENCE_VALUE,
         a.ACTIVE_DETAIL,
         b.REQUESTOR_WWID,
         b.REQUEST_DATE
 from DB_MOD_REQ_DETAILS a, DB_MOD_REQ_HEADER b
 where a.MOD_REQ_NUM=b.MOD_REQ_NUM
 and a.ACTIVE_DETAIL='Y' 
 and b.ACTIVE_HEADER='Y'
 ----------------------------------------------------------
 and 
    (a.REFERENCE_VALUE like '%43598%' and a.REFERENCE_CODE = 2)
 and 
    (a.REFERENCE_VALUE like '%3694894%' and a.REFERENCE_CODE = 4)
Run Code Online (Sandbox Code Playgroud)

这是我使用"或"时的屏幕截图

在此输入图像描述



更新

我希望只能在给定的a.REFERENCE_CODE中搜索a.REFERENCE_VALUE.我有表单字段和C#foreach循环.每个字段都有自己的REFERENCE_CODE.如果用户正在搜索1个字段,我想这样做:

(a.REFERENCE_VALUE like '%43598%' and a.REFERENCE_CODE = 2)
Run Code Online (Sandbox Code Playgroud)

如果用户正在搜索多个字段,我想匹配:

a.REFERENCE_VALUE like '%43598%' and a.REFERENCE_CODE = 2
and
a.REFERENCE_VALUE like '%3694894%' and a.REFERENCE_CODE = 4
Run Code Online (Sandbox Code Playgroud)

这是包含所有数据的查询的屏幕截图 在此输入图像描述

jmc*_*ney 5

这部分没有意义:

and 
    (a.REFERENCE_VALUE like '%43598%' and a.REFERENCE_CODE = 2)
and 
    (a.REFERENCE_VALUE like '%3694894%' and a.REFERENCE_CODE = 4)
Run Code Online (Sandbox Code Playgroud)

怎么可能REFERENCE_CODE是2和4?至少,最后两组条件之间应该存在OR,即

and 
    ((a.REFERENCE_VALUE like '%43598%' and a.REFERENCE_CODE = 2)
or
    (a.REFERENCE_VALUE like '%3694894%' and a.REFERENCE_CODE = 4))
Run Code Online (Sandbox Code Playgroud)

您可能也可能不需要将其他AND运算符更改为OR.