首页 | 公司简介 | 数据恢复 | 成功案例 | 技术中心 | 客户服务 | 服务报价 | 联系我们 | 技术论坛  
 
  北京总部: 4006-505-808
  上 海 部: 021-58358765
  深 圳 部: 0755-83692929
  浙 江 部: 13666673722
  广 州 部: 020-83821091
  重 庆 部: 023-86870422
  福 建 部: 0591-83300680
  昆 明 部: 15987117834
  其它地区: 4006-505-808

中国石油管理局-Oracle数据库恢
工商银行山东分行-AIX删除LV数
濮阳市地方税务局-CHKDSK后数据
台湾HD公司-FreeBSD Nas无法启
promise乔鼎硬盘阵列数据恢复成
IBM EXP300 磁盘阵列数据恢复成
NAS 8100无法挂载数据卷
Liteon-Dell 2850服务器数据恢

RAID损坏后 对数据的完整备份
LINUX FSCK数据出错灾难应急方
误删除、误格式化数据灾难应急
误GHOST、误一键恢复灾难应急方
磁盘未被格式化,是否格式化数据
raid磁盘阵列OFFLINE后的应急方
硬盘出现异响应急处理
您当前的位置:首页 >> 技术中心 >> 数据库修复文栏 >> 正文

mssql默认不区分大小写;向excel中写入长整型时异常

1.sql server 2000下默认不区分大小写,不区分全半角

平时会遇到这种状况:当查询字段等于'a'的记录时,查询结果中包括等于 A a A 的记录;
原因是在Sql Server数据库中建立的数据表字符类型字段是不区分大小写、全半角的,无论是查询还是排序它们都被认为是一样的:
aAaA
bBbB
cCcC
dDdD

如果你想建立一个支持大小写区分的字段,应该这样写:
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();

当我们使用的对象预期为字符串类型时,最好使用显示转换的写法,以避免隐式转换时出现不可预期的异常。

 

上一篇:MySQL与Access之语法区别
下一篇:sql server 2005中的except和INTERSECT运算
返回首页 | 联系我们 | 关于我们 | 招聘信息 | 友情链接 | 网站地图 | 合作伙伴

版权所有 北京北亚数据恢复中心
24小时免费咨询电话:4006-505-808 或 800-810-5880
中关村部:北京市海淀区中关村大街11号E世界A座832B室
皂君庙部:北京市海淀区学院南路68号吉安大厦C座(汇智楼)528室
京ICP备07502730