我有一个带有不同搜索选项的搜索栏,我希望SQL查询仅使用填充的文本框进行搜索
我制作了一个简单的SP,当我有一个仅带有两个使用if语句的搜索选项(名称和代码)的搜索栏时,效果很好(不是最佳实践)。但是,既然我已经搜索了包含4-5个元素的bbar,那么IF语句似乎就不是提高性能的最佳实践
这是针对只有两个搜索选项的情况下执行的过程:
@Code_client nvarchar(50),
@Intitule_client varchar(100)
as
IF (@Code_client is not NULL AND @Code_client!='')
BEGIN
IF (@Intitule_client IS not NULL AND @Intitule_client!='')
select * from Clients where Code_client=@Code_client and Intitule_client=@Intitule_client
ELSE
select * from Clients where Code_client=@Code_client
END
ELSE IF (@Intitule_client is not null AND @Intitule_client!='')
BEGIN
select * from Clients where Intitule_client=@Intitule_client
END
但是在这种情况下,我有4种搜索选项,如下所示:
<div id="chercher_employe" class="Rechercher">
<ul>
<li>
<asp:TextBox runat="server" ID="chercher_employe_Nom" CssClass="Input" placeholder="Nom employe"></asp:TextBox>
</li>
<li>
<asp:TextBox runat="server" ID="chercher_employe_Departement" CssClass="Input" placeholder="Departement"></asp:TextBox>
</li>
<li>
<asp:TextBox runat="server" ID="chercher_employe_occupation" CssClass="Input" placeholder="Occupation"></asp:TextBox>
</li>
<li>
<asp:TextBox runat="server" ID="chercher_employe_IntituleProfil" CssClass="Input" placeholder="Profil"></asp:TextBox>
</li>
<li>
<asp:LinkButton runat="server" CssClass="button"> <i class="fas fa-search"></i> </asp:LinkButton>
</li>
</ul>
</div>
除了将if语句与C#或SQL结合使用外,我找不到其他方法了,
答案 0 :(得分:0)
if语句无非是逻辑含义
a -> b
如果是a则b
也可以写为
!a or b
不是a或b
您的if语句
IF (@Intitule_client IS not NULL AND @Intitule_client!='')
select * from Clients where Code_client=@Code_client and Intitule_client=@Intitule_client
可以翻译为(使用戴摩根定律简化双重否定(not(a or b) <=> not(a) and not(b)
)
SELECT *
FROM Clients
WHERE (@Intitule_client IS NULL OR @Intitule_client = '' OR Intitule_client = @Intitule_client) AND Code_client = @Code_client
然后您可以使用此模式来构建更复杂的查询。
答案 1 :(得分:0)
@Larnu和@jarlh命题最适合我。 该链接很好地说明了这一点: https://blogs.sentryone.com/aaronbertrand/backtobasics-updated-kitchen-sink-example/
谢谢大家的回答,谢谢:)
(请在这里写下您的答案,这样,如果有人遇到同样的问题,我可以接受它^^)