我有一个带有数字的 Varchar 值的表,我希望它们是十进制值。我收到一条错误消息,提示将数据类型 varchar 转换为数字时出错。我试过了:
SELECT ROUND(CAST(MYCOLUMN AS decimal(10, 2)), 2)
FROM TABLE
和
ALTER TABLE MYTABLE
ALTER COLUMN MYCOLUMN DECIMAL(10,2)
和
ALTER TABLE MYTABLE
MODIFY COLUMN ACQ_FIELD_8 DECIMAL(10,2)
和
SELECT ISNULL(CAST(NULLIF(MYCOLUMN, 'NULL') AS NUMERIC(10,2)), 0)
FROM MYTABLE
我不断收到同样的错误。我通过使用以下方法查看数据以查找任何特殊字符或字母:
SELECT MYCOLUMN FROM MYTABLE
WHERE MYCOLUMN LIKE '%[a-zA-Z]%'
or MYCOLUMN LIKE '%[(]%' --etc for each character.
我发现的唯一一件事是,由于某种原因,每个值都有一个'^'
,但是当我用空替换它时'6'
,该值仍然无法转换为小数或数字。如果我尝试按数字(< 0.00)对列进行排序,我得到Arithmetic overflow error converting varchar to data type numeric
.
有谁知道该怎么做?