2015-10-21 205 views
6

以下のSQLクエリを実行すると、私は次のエラーを取得する:SQL Server:データ型nvarcharを数値に変換中にエラーが発生しました。

Error converting data type nvarchar to numeric.

COLUMNAは、小数点以下2桁までの最大のフィールドを含む数字だけ(負と正)が含まれており、ドット小数として格納されています。

IF OBJECT_ID('st00_TABLEA','U') IS NOT NULL DROP TABLE [st00_TABLEA] 
SELECT 
    COLUMNA AS COLUMNA_s 
    ,CASE WHEN [COLUMNA] = '' THEN 0 ELSE CONVERT(NUMERIC(18,2),REPLACE([COLUMNA],',','.')) END AS COLUMNA 
INTO st00_TABLEA 
FROM dbosu.TABLEA; 

私も次のことを試してみましたが、それでも同じ問題:あなたは列のデータを修正する必要があるかもしれませんが、とにかくあなたが次のいずれかを行うことができ

IF OBJECT_ID('st00_TABLEA','U') IS NOT NULL DROP TABLE [st00_TABLEA] 
SELECT 
    COLUMNA AS COLUMNA_s 
    ,CONVERT(DECIMAL(18,2),COLUMNA) AS COLUMNA 
INTO st00_TABLEA 
FROM dbosu.TABLEA; 
+0

このサンプルでは、​​COLUMNA –

+0

を追加できますか?どのようにサンプルをアップロードできますか? – bbilal

答えて

15

: -

それが数値の場合

1 - チェックは、それが他の0

Select COLUMNA AS COLUMNA_s, CASE WHEN Isnumeric(COLUMNA) = 1 
THEN CONVERT(DECIMAL(18,2),COLUMNA) 
ELSE 0 END AS COLUMNA 

2 - Nのみを選択するように別の値を入れて変換しますカラムからの数値の数値

SELECT COLUMNA AS COLUMNA_s ,CONVERT(DECIMAL(18,2),COLUMNA) AS COLUMNA 
where Isnumeric(COLUMNA) = 1 
+0

あなたのご意見ありがとうございます。次のようなエラーが表示されます: 条件が期待されるコンテキストで指定された非ブール型の式で、 'REGEXP'の近くにあります。 – bbilal

+0

@bbilal今すぐご確認ください、私はクエリを更新しました –

+0

ありがとう!今それは動作します。 クエリでは、セルが数値かどうかをチェックします。そうであれば;それらを変換します。 私は何を理解していません。 COLUMNAは実際にはテーブル内の数値のみを持ちます(負数と正数、ゼロの両方)。あなたはまだ数値のチェックが必要な理由を知っていますか? – bbilal

関連する問題