mssql默認不區分大小寫;向excel中寫入長整型時異常
1.sql server 2000下默認不區分大小寫,不區分全半角
平時會遇到這種狀況:當查詢字段等于'a'的記錄時,查詢結果中包括等于 A a A 的記錄;原因是在Sql Server數據庫中建立的數據表字符類型字段是不區分大小寫、全半角的,無論是查詢還是排序它們都被認為是一樣的:aAaAbBbBcCcCdDdD
如果你想建立一個支持大小寫區分的字段,應該這樣寫:field NVARCHAR(50) COLLATE Chinese_PRC_CS_AS,;-- 區分大小寫
如果你想建立一個支持全半角區分的字段,應該這樣寫:field NVARCHAR(50) COLLATE Chinese_PRC_CI_AS_WS,-- 區分全角半角
如果你想讓這個字段既支持大小寫區分又支持全半角區分,應該這樣寫:field NVARCHAR(50) COLLATE Chinese_PRC_CS_AS_WS,-- 區分大小寫和全角半角
在中文版sqlserver2000下默認字段類型是這樣的:field NVARCHAR(50) COLLATE Chinese_PRC_CI_AS,-- SQL Server 默認區分重音(重音是什么東西?)
使用可視化窗口設置也很簡單:使用企業管理器,選擇表使用“設計表”功能-排序規則打開窗口:勾選區分大小寫,勾選區分寬度(全半角區分)
==================================================================================2.有一個使用.net寫入Excel的程序,在win2000下會出現異常,在win2003下則不出現此異常,情況很特別
定位在錯誤出現處的一行代碼是sheet0.Cell[1,1] = Row['L'];
通過查看已經寫入的部分,出現錯誤時將要寫入的是一個整型數值。編寫一個Excel中寫入整型數的程序,未能重現此bug。
考慮到列L的數據是從數據庫中讀出并未顯示使用某種類型表示它,所以它的類型不一定是整型;打開數據庫查看,L的類型定義是bigint;編寫一個Excel寫入長整型數的程序,重現此bug。
此問題說明在Win2000下,為Excel寫入長整型時,未能正確轉換為字符串。在Excel中所有值的表示都是使用字符串,我們在將值寫入Excel之前就應該將其轉換為字符串類型。該行代碼修改為以下樣式后,不再出現異常:sheet0.Cell[1,1] = Row['L'].Tostring();
當我們使用的對象預期為字符串類型時,最好使用顯示轉換的寫法,以避免隱式轉換時出現不可預期的異常。http://blog.csdn.net/dongma_yifei/archive/2007/01/25/1493597.aspx
