close
在 MS SQL 中,空白字元在【某些的字串函數或比較式】執行結果會與預期的不一樣,例如
Sample 1:
IF ( ' ' = '' ) -- 一個是兩個空白,一個是空字串
print '相等'
else
print '不相等';
執行結果是] ==> 相等
Sample 2:
print Len(' ') -- 結果等於 0
Sample 3:
print Len('123 ') -- 結果等於 3 Len 函數會自動將字尾的空白去掉
Sample 4:
print Len(' 123') -- 結果等於 5
Q: 那如果要真的求出字串 '123 ' ,長度為 5 ,指令該用什麼??
==> A: 後面有空白的字元長度,要求出實際長度,不可以使用 Len ,要使用 DataLength ==> 這是求出【位元組】的長度
※特別注意:
DataLength 是求出位元組,所以
範例如下
Declare @sWideString nvarchar(20) -- Unicode
Declare @sString varchar(20) -- 一般字元
Set @sWideString = '我是中文字加 ABC '
Set @sString = '我是中文字加 ABC '
print Len(@sWideString) -- 長度 10 (因為 Len 指令會將尾端的空白去掉)
print Len(@sString) -- 長度 10 (因為 Len 指令會將尾端的空白去掉)
print DataLength(@sWideString) -- 長度 26
print DataLength(@sString) -- 長度 19
Sample 1:
IF ( ' ' = '' ) -- 一個是兩個空白,一個是空字串
print '相等'
else
print '不相等';
執行結果是] ==> 相等
Sample 2:
print Len(' ') -- 結果等於 0
Sample 3:
print Len('123 ') -- 結果等於 3 Len 函數會自動將字尾的空白去掉
Sample 4:
print Len(' 123') -- 結果等於 5
Q: 那如果要真的求出字串 '123 ' ,長度為 5 ,指令該用什麼??
==> A: 後面有空白的字元長度,要求出實際長度,不可以使用 Len ,要使用 DataLength ==> 這是求出【位元組】的長度
※特別注意:
DataLength 是求出位元組,所以
- 當碰上中文字時,每一個字的長度皆為 2
- 當型態為:nvarchar、nchar 時,不管英文、符號,長度皆為 2
當型態為:varchar、char 時,英文、符號的長度皆為 1
範例如下
Declare @sWideString nvarchar(20) -- Unicode
Declare @sString varchar(20) -- 一般字元
Set @sWideString = '我是中文字加 ABC '
Set @sString = '我是中文字加 ABC '
print Len(@sWideString) -- 長度 10 (因為 Len 指令會將尾端的空白去掉)
print Len(@sString) -- 長度 10 (因為 Len 指令會將尾端的空白去掉)
print DataLength(@sWideString) -- 長度 26
print DataLength(@sString) -- 長度 19
全站熱搜
留言列表