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


          比如說當事人名稱為“張三、李四、”,在原來的cp850庫返回的結果是“張三、李四。但是升級到utf-8之后,返回的就是“張三、李”。
            主要是cp850字符集,一個漢字占兩個字節,而升級到utf-8之后就占三個字節了,所以這里的減2就不正確了。
            執行如下的腳本
          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。當然print '%1!', @MC打印的結果都是"張三、李四"
            所以最終把代碼改為如下就正確了,字符集就不會影響結果。
          -- 去掉末尾的頓號
              set @MC = substring(@MC1len(@MC- len(''))
          經常看到數據庫版本限制引起的各種問題,看來有些知識需要普及一下。
          除了查手冊外,再提供一種比較方便的方法,可以得到當前ASE服務器上各項限制值。
          執行如下命令即可:
          dbcc traceon(3604)
          go
          dbcc serverlimits
          go
          posted on 2008-09-19 17:05 歲月如歌 閱讀(1290) 評論(0)  編輯  收藏 所屬分類: db
          主站蜘蛛池模板: 乡城县| 宝清县| 博客| 开封县| 伽师县| 石狮市| 民丰县| 蕲春县| 永川市| 陈巴尔虎旗| 腾冲县| 安乡县| 钟山县| 定日县| 巴塘县| 瑞丽市| 吴川市| 安仁县| 大冶市| 桦川县| 剑川县| 龙山县| 土默特左旗| 乌审旗| 云南省| 响水县| 渭南市| 孟州市| 息烽县| 瓦房店市| 江安县| 句容市| 得荣县| 环江| 新巴尔虎左旗| 腾冲县| 瓮安县| 申扎县| 五指山市| 营山县| 彭州市|