SQL中NULL不能用<>比较

在工作中写了一段半年自动备份的脚本,但是发现跨半年时并没有自动备份成功

/*******************************The Semesterly backup*******************************/
declare @CureentFFEWeek varchar(8),@sql varchar(max),@historyH2 varchar(10),@H1 varchar(10),@CurrentWeekHYSeq int,@NextWeekHYSeq int
select @CureentFFEWeek = WkDate from tblFFEWeekList where WKSeq = 1 
select @CurrentWeekHYSeq = HYSeq from tblFFEWeekList_52WeekAfterFFEWeek where WkDate = @CureentFFEWeek
select @NextWeekHYSeq = HYSeq from tblFFEWeekList_52WeekAfterFFEWeek where WkDate = convert(varchar(8),dateadd(day,7,@CureentFFEWeek),112)
select @historyH2 = isnull(TimeDisplay,'') from historySVGeoHTDCallReachFrequency where TimePeriod = 'H2'
select @H1 = TimeDisplay from tempSVGeoCallReachFrequency where TimePeriod = 'H1'
select @CureentFFEWeek = WkDate from tblFFEWeekList where WKSeq = 1 

if @CurrentWeekHYSeq <> @NextWeekHYSeq and @historyH2 <> @H1
begin 

	set @sql = '
	
		update a 
		set TimePeriod = cast(''H'' + cast(cast(right(a.TimePeriod,1) as int)+1 as varchar(10)) as varchar(10))
		from historySVGeoHTDCallReachFrequency a
		
		insert into historySVGeoHTDCallReachFrequency
		(Geo,Granularity,TimePeriod,TimeDisplay,TimeType,Reach,Frequency)
		select Geo,Granularity,''H2'' as TimePeriod,TimeDisplay,TimeType,Reach,Frequency 
		from tempSVGeoCallReachFrequency
		where timeperiod = ''H1''

		'
	print(@sql)	
	exec (@sql)

end

经排查,发现第一次备份的情况下,historySVGeoHTDCallReachFrequency历史表为空,@historyH2为NULL值

为了验证简化脚本运行发现无输出

declare @historyH2 varchar(10),@H1 varchar(10),@CurrentWeekHYSeq int,@NextWeekHYSeq int
select @CurrentWeekHYSeq = 3
select @NextWeekHYSeq = 4
select @historyH2 = null
select @H1 = '2021H1'

if @CurrentWeekHYSeq <> @NextWeekHYSeq and @historyH2 <> @H1
begin
	print 'hello world!'
end

修改脚本对null值进行判断,发现有输出内容

declare @historyH2 varchar(10),@H1 varchar(10),@CurrentWeekHYSeq int,@NextWeekHYSeq int
select @CurrentWeekHYSeq = 3
select @NextWeekHYSeq = 4
select @historyH2 = null
select @H1 = '2021H1'

if @CurrentWeekHYSeq <> @NextWeekHYSeq and isnull(@historyH2,'') <> @H1
begin
	print 'hello world!'
end

总结:
NULL值不能用<>同其他数值进行比较

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值