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