打印本文 打印本文 关闭窗口 关闭窗口
[SQL]不要让SQLServer帮你自动转换SQL命令中的数据类型
作者:武汉SEO闵涛  文章来源:敏韬网  点击数4473  更新时间:2007/11/14 11:00:32  文章录入:mintao  责任编辑:mintao
环境:

数据库服务器:Microsoft SQL Server 2000以及7.0

数据库服务器补丁:Microsoft SQL Server 2000 ServicePack1

 

原因分析:

不是SQL Server突然不能从数字自动转换为字符串,而是单单对这个字段的数值有问题,这也和这个字段中实际已存储的字符串有关。

 

你看,我执行这个SQL语句是没有问题,可以自动转换:

SELECT * FROM XXXX_ORIGINAL_20031205
where recordid=62010388000012

recordid这个字段的类型也是:varchar(30)

这为什么就可以呢?

 

为什么?

这是因为msgid字段的真实数值是类似于这样的字符串“12051113280101053509”,由于你的SQL命令中要求拿字符串跟我们提供的这个数字62010388000012匹配,所以SQLServer默认要把这么多个“12051113280101053509”先统统转换为数字,再去跟62010388000012匹配。

(首先这就涉及到一个效率问题,转换这么多msgid成为数字,再跟你的数字匹配,将是一个多么大的浪费啊)

上一页  [1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口