0

数値である Varchar 値を含むテーブルがあり、それらを 10 進数値にしたいと考えています。データ型 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.

私が見つけた唯一のことは、何らかの理由ですべての値に aが含ま'^'れていることですが、 を何も置き換えて'6'も、値を 10 進数または数値に変換することはできません。列を番号 (< 0.00) で並べ替えてみると、 が得られArithmetic overflow error converting varchar to data type numericます。

誰が何をすべきか知っていますか?

4

2 に答える 2

1

これを試して :

select round(try_convert(decimal(10,2), Mycolumn),2)

10 進数に変換できない値があるようです。try_convert はそれらを NULL として変換します

于 2013-10-04T17:04:23.930 に答える