【发布时间】:2010-04-06 23:44:51
【问题描述】:
我有一个 SQL Server 2000 数据库,其中有一列类型为 VARCHAR(255)。所有数据要么是 NULL,要么是精度高达两个点的数字数据(例如“11.85”)。我尝试运行以下 T-SQL 查询,但收到错误“将数据类型 varchar 转换为数字时出错”
SELECT CAST([MyColumn] AS DECIMAL)
FROM [MyTable];
我尝试了更具体的演员表,但也失败了。
SELECT CAST([MyColumn] AS DECIMAL(6,2))
FROM [MyTable];
我还尝试了以下方法来查看是否有任何数据是非数字的,并且返回的唯一值是 NULL。
SELECT ISNUMERIC([MyColumn]), [MyColumn]
FROM [MyTable]
WHERE ISNUMERIC([MyColumn]) = 0;
我尝试转换为其他数据类型,例如 FLOAT 和 MONEY,但只有 MONEY 成功。所以我尝试了以下方法:
SELECT CAST(CAST([MyColumn] AS MONEY) AS DECIMAL)
FROM [MyTable];
...效果很好。任何想法为什么原始查询失败?如果我先转换为 MONEY 然后再转换为 DECIMAL 会有问题吗?
谢谢!
【问题讨论】:
标签: sql-server tsql sql-server-2000 data-conversion