gpt4 book ai didi

mysql - 如果字段值为空,则排除 where 子句中的列

转载 作者:行者123 更新时间:2023-11-29 11:23:48 25 4
gpt4 key购买 nike

我有一个用于搜索屏幕的存储过程,其中有 5 个不同的过滤器。用户可以将过滤器保留为空,也可以使用一个过滤器并单击搜索按钮。

所有数据都来自数据库,我正在尝试创建存储过程,如果参数值为空字符串,它可以排除 where 子句中的列。

@Id as nvarchar(256) = 1
@blnIsinProgress bit = 0
@strStatus varchar(20) = ''
@strName varchar(50) = ''
@strConfirmationNumber varchar(50) = 123
@dtmSubmittedFrom Date = '12/31/9999'
@dtmSubmittedTo Date = '12/31/9999'
as
BEGIN
SELECT *
FROM tblTable
WHERE
(@Id IS NULL OR lngID = @Id) AND
(@blnIsinProgress IS NULL OR blnIsinProgress = @blnIsinProgress) AND
(@strStatus = '' OR strStatus = @strStatus) AND
(@strName= '' OR strName= @strName) AND
(@strConfirmationNumber = '' or @strConfirmationNumber = @strConfirmationNumber )
End

但是

Execute spManage 1,0,'','',123 

会给我所有结果

最佳答案

问题出在这一行:

(@strConfirmationNumber = '' or @strConfirmationNumber = @strConfirmationNumber )

第二个条件始终为真。您有一个额外的@。所以,试试这个:

(@strConfirmationNumber = '' or @strConfirmationNumber = strConfirmationNumber )

关于mysql - 如果字段值为空,则排除 where 子句中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com