我目前有一个表,其列为varchar
。此栏可以保存数字或文字。在某些查询我把它当作一个bigint
列转换数据类型时出错varchar
只要有唯一编号,在此领域没有任何麻烦,但一分钟甚至一列(它在别的表是bigint
列之间我做一个连接)有这个字段中的文本和数字我得到了一个“错误转换数据类型varchar
到bigint
”。错误,即使在WHERE部分我确保没有任何文本字段出现。
为了解决这个问题,我创建一个视图如下:
SELECT TOP (100) PERCENT ID, CAST(MyCol AS bigint) AS MyCol
FROM MyTable
WHERE (isnumeric(MyCol) = 1)
但即使视图只显示与数值的行蒙上Mycol为bigint我还得到一个错误转换数据类型为varchar为bigint运行下面的查询时:
SELECT * FROM MyView where mycol=1
对视图做查询时它不应该知道是怎么回事就可以了后面!它应该只是看到两个bigint领域! (see attached image,即使mssql管理工作室显示视图字段为bigint)
我个人认为你正在解决错误的问题。如果您为了两个不同的目的而使用一列,那么您的架构/数据库设计会出现问题。 – 2009-08-06 11:13:13
是的,我知道,但整个系统现在已经太重要了 – adinas 2009-08-06 13:24:44