我有一个带有 VARCHAR(255) 类型列的 SQL Server 2000 数据库。所有数据要么是 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 会有问题吗?
谢谢!