我今天遇到一個問題,接到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的,並不是透過程式加上的~
那是MSSQL varchar及nvarchar的規範,會自動去最後面字元右邊的所有空白
學習了
原來如此~
想說MySQL的Length函數,可以正確計算呢@@
還是有些微差異~