我今天遇到一个问题,接到Bug报告处理@@..
说人数计算有问题~
我用眼看后,想说为何明明是4个人,却会带出5的数字
举例:
declare @Str1 nvarchar(50)declare @Str2 nvarchar(50)set @Str1 = 'AAA ,BBB ,CCC ,EEE,'set @Str2 = 'DDD ,KKK ,XXX ,EEE ,'select len(@Str1) - len(replace(@Str1,',','')) Num1,len(@Str2) - len(replace(@Str2,',','')) Num2
结果
后来为了查询Len判断空白问题,特别列出来,原来Len会将最右边的空白捨弃掉@@..
举例:
declare @Str3 nvarchar(50)declare @Str4 nvarchar(50)set @Str3 = ' 'set @Str4 = ' , 'select len(@Str3) Num3,len(@Str4) Num4
结果
所以为了避免奇怪的空白问题,就先把空白都取代掉再来判断
举例:
select len(replace(@Str1,' ','')) - len(replace(replace(@Str1,' ',''),',','')) Num1,len(replace(@Str2,' ','')) - len(replace(replace(@Str2,' ',''),',','')) Num2
结果
这样人数就正确了
关于那个空白是人为key的,并不是透过程式加上的~