2017-10-18 62 views
1

私は、この表の中にいくつかのデータを挿入しようとしていますが、私はこのエラーを取得:データ型varcharを数値に変換中にエラーが発生しました。 SQL ServerのINSERT文

Msg 8114, Level 16, State 5, Line 3
Error converting data type varchar to numeric.

SQL INSERT STATEMENT

私は引用符を削除しようとしたが、それはまだ私に同じことを示していますエラー:

USE CobornSalesDB; 
GO 

INSERT INTO SalesActivity 
VALUES ('AC00001', '05-12-2016', 'AG16170', 'C000001', 'P0001', 'S00002'‌​, '1', '200000.00', '',‌ ​'1.2220', '20', '100000.00', '25-12-2016', '30-12-2016', '31-12-2016', 'A00‌​0001', 'PR00001'); 
GO 
+2

のようにmm/dd/yyyy形式で日付を入力してみてください。数値データのためにそれらを削除してください。 – jarlh

+0

QTYは引用符なしにし、他の数値データも同様にする必要があります。 – maSTAShuFu

+2

数値の場合は一重引用符は必要ありませんが、使用するとエラーは発生しません。しかし、コンマは使用されます。 –

答えて

3

すべての数値列で、挿入する値からカンマを取り出します。

+0

まだ動作していません私は間違って何をやっているのかわかりません。この方法で試してみてください。USE CobornSalesDB; GO INSERT INTO SalesActivity VALUES( 'AC00001'、 '05-12-2016'、 'AG16170'、 'C​​000001'、 'P0001'、 'S00002'、1,200000.00、 ''、1.2220、 20,100000 。00、'25 -12-2016 '、'30-12-2016'、 '31-12-2016'、 'A000001'、 'PR00001'); GO –

2

これはコメントから取得したクエリです。 あなたは実際には質問としてテキストとしてイメージに含めるべきではありません。テーブルの定義では

INSERT INTO SalesActivity VALUES 
('AC00001', 
'05-12-2016', 
'AG16170', 
'C000001', 
'P0001', 
'S00002'‌​, 
'1', 
'200000.00', 
'',‌    -- valueEUR 
​'1.2220', 
'20', 
'100000.00', 
'25-12-2016', 
'30-12-2016', 
'31-12-2016', 
'A00‌​0001', 
'PR00001'); 

我々はvalueEUR列が数値であることがわかります。そこに文字列を渡しています。文字列だけでなく、数値に変換できない文字列。空の文字列''は数値に変換できません。

私は、そのフィールドにNULLを挿入したいと思っています。だから、

  • INSERTステートメントで行う必要があります。
  • また、サーバーが文字列を数値に変換する必要がないように、数値の前後のすべての引用符を削除する必要があります。
  • また、YYYY-MM-DD形式で日付を書き込む必要があります。それ以外の場合は、ある日、サーバーが間違って推測し、月と日を交換したことに驚くかもしれません。
  • また、INSERTステートメントのすべての列名をリストする必要があります。それ以外の場合は、テーブルに新しい列を追加するとコードが破損します。

クエリは次のようになります。

INSERT INTO dbo.SalesActivity 
    (Activity_ID, 
    [Date], 
    Quatation_Number, 
    Customer_ID, 
    Product_ID, 
    Status_ID, 
    Quantity, 
    valueGBR, 
    valueEUR, 
    Rate, 
    Commission, 
    weightedValue, 
    estDecisionDate, 
    currentEstCompletionDate, 
    originalEstCompletionDate, 
    Agent_ID, 
    Probability_ID) 
VALUES 
    ('AC00001', 
    '2016-12-05', 
    'AG16170', 
    'C000001', 
    'P0001', 
    'S00002'‌​, 
    1, 
    200000.00, 
    NULL,‌ 
    ​1.2220, 
    20, 
    100000.00, 
    '2016-12-25', 
    '2016-12-30', 
    '2016-12-31', 
    'A00‌​0001', 
    'PR00001'); 
+0

こんにちは、このようにしようとしましたが、このエラーが発生します。メッセージ102、レベル15、状態1、行4 'の近くに構文が正しくありません。 –

+0

@GeorgiGeorgiev、あなたが実行しようとしている新しいクエリで質問を更新してください。私の答えでは、クエリは '' ''が全くないので、どこから取り出したのか分かりません。 –

0

は、単一引用符は文字列リテラルのためのものである。この

INSERT INTO SalesActivity VALUES ('AC00001','12-05-2016','AG16170','C000001', 
'P0001','S00002'‌​,1,200000.00,'',‌ ​1.2220, 20,100000.00, 
'12-25-2016','12-30-2016','12-31-2016','A00‌​0001','PR00001'); 
+0

mm/dd/yyyyはあいまいな形式です。ヨーロッパでは多くの国でdd/mm/yyyy形式が使用されているためです。私はyyyy/mm/dd形式に行きます。 –

+0

データの入力中にフォーマットすることができます –

+0

こんにちは、メスエラーメッセージ102、レベル15、状態1、行4を与えています 'の近くに構文が正しくありません。 –

関連する問題