歲月如哥
          人生非夢
          posts - 50,comments - 144,trackbacks - 0
          1、原來一直在使用varchar(n),但不是很清楚這個n的最大值是多少。查了一下sybase的用戶手冊,n的范圍為數(shù)據(jù)的頁大小,
             即使用select @@maxpagesize查到的數(shù)字。
           
          除非設(shè)定string_rtruncation on,Adaptive Server將條目截斷到指定列的長度而不加警告或出現(xiàn)錯誤信息。
          2、數(shù)據(jù)庫從cp850遷移到utf-8環(huán)境之后,原來的獲取當(dāng)事人名稱的存儲過程返回的結(jié)果有誤,即有名稱被截取的問題,如下代碼: 
           
          -- 去掉末尾的頓號
              set @MC = substring(@MC1len(@MC- 2)


          比如說當(dāng)事人名稱為“張三、李四、”,在原來的cp850庫返回的結(jié)果是“張三、李四。但是升級到utf-8之后,返回的就是“張三、李”。
            主要是cp850字符集,一個漢字占兩個字節(jié),而升級到utf-8之后就占三個字節(jié)了,所以這里的減2就不正確了。
            執(zhí)行如下的腳本
          declare @MC varchar(100
          declare @length int
          set @MC = '張三、李四、'
          set @length = len(@MC)
          print '%1!'@length
          set @MC = substring(@MC1len(@MC- len(''))
          print '%1!'@MC
          在cp850下,print '%1!', @length打印的長度為12,而在utf-8下則返回的是6。當(dāng)然print '%1!', @MC打印的結(jié)果都是"張三、李四"
            所以最終把代碼改為如下就正確了,字符集就不會影響結(jié)果。
          -- 去掉末尾的頓號
              set @MC = substring(@MC1len(@MC- len(''))
          經(jīng)常看到數(shù)據(jù)庫版本限制引起的各種問題,看來有些知識需要普及一下。
          除了查手冊外,再提供一種比較方便的方法,可以得到當(dāng)前ASE服務(wù)器上各項限制值。
          執(zhí)行如下命令即可:
          dbcc traceon(3604)
          go
          dbcc serverlimits
          go
          posted on 2008-09-19 17:05 歲月如歌 閱讀(1280) 評論(0)  編輯  收藏 所屬分類: db
          主站蜘蛛池模板: 大新县| 恩施市| 天门市| 会宁县| 远安县| 若羌县| 青河县| 屯留县| 巍山| 泽库县| 蒙山县| 建始县| 南城县| 滦平县| 古蔺县| 罗田县| 赤峰市| 渝中区| 望江县| 德钦县| 威海市| 昌都县| 铜陵市| 长寿区| 泊头市| 天台县| 得荣县| 阿合奇县| 沂南县| 德保县| 张家界市| 彝良县| 临泽县| 承德县| 朝阳市| 无极县| 巴楚县| 永宁县| 五指山市| 上蔡县| 白城市|