使用Like
运算符和and
运算符时,在存储过程和stimulsoft上工作时遇到问题。请帮我。当我使用此代码时,它将在stimul中返回空白页,但是如果我将条件之一更改为or
,则该代码将返回数据库表中的所有行
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[reportedu2]
@d1 NVARCHAR(50),
@d2 NVARCHAR(50),
@name NVARCHAR(50),
@unit NVARCHAR(50),
@semat NVARCHAR(50),
@maghta NVARCHAR(50),
@uni NVARCHAR(50),
@field NVARCHAR(50)
AS
BEGIN
SELECT *
FROM Tbledu
WHERE (unit LIKE '%' + ISNULL(@unit, unit) + '%')
AND (name LIKE '%' + ISNULL(@name, name) + '%')
AND (dateend BETWEEN @d1 AND @d2)
AND (semat LIKE '%' + ISNULL(@semat, semat) + '%')
AND (maghta LIKE '%' + ISNULL(@maghta, maghta) + '%')
AND (uni LIKE '%' + ISNULL(@uni, uni) + '%')
AND (field LIKE '%' + ISNULL(@field, field) + '%')
END
答案 0 :(得分:0)
调试此问题的一种好方法是自己尝试每个条件,并确保它返回您期望的行。
如果要取回所有行,则最有可能的事情是其中一个变量是=”,而不是期望的null,因此类似条件是,例如...
(uni Like '%%')
哪个当然会返回所有内容。