| 环境:
数据库服务器: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] 下一页 |