检查空变量时 T-SQL 中的问题



我在SQL Server中编写了一个触发器,如下所示

DECLARE @N_CATComp smallint, @EXON varchar(69), @DATEDEB varchar(15), @DATEFIN varchar(15)
SELECT 
    @N_CATComp = N_CATCompta, 
    @EXON =[Exon N°],
    @DATEDEB = CONVERT(varchar(15), [Date début] , 103), 
    @DATEDEB = CONVERT(varchar(15), [Date début] , 103) 
FROM INSERTED
IF  (@N_CATComp =4) AND  ( ISNULL(@EXON,'')='' OR ISNULL(@DATEDEB,'') ='' OR ISNULL(@DATEFIN,'') ='') 
BEGIN
     RAISERROR('false',11,1)
END

我的问题是,当@exon时,@datedeb,@datefin 不为空并且 catcomp=4 会出现不应该出现的错误我试图通过例如 len(@EXON)=0 在这种情况下 ven 来消除 isnull 如果值为空,则不会出现 raiserror

删除所有这些标量变量也是如此。

IF EXISTS
(
    SELECT *
    from inserted
    where N_CATCompta = 4
        AND 
        (
            ISNULL([Exon N°], '') = '' 
            OR 
            ISNULL([Date début], '') = '' 
        ) 
)   
     RAISERROR('false',11,1)

最新更新