在 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 是求出位元組,所以

  • 當碰上中文字時,每一個字的長度皆為 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
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 joomy 的頭像
    joomy

    呀米呀米 .....((((( O_O))))).....

    joomy 發表在 痞客邦 留言(0) 人氣()