2017-10-18 34 views
1

Je suis en train d'insérer des données dans ce tableau, mais je reçois cette erreur:Erreur lors de la conversion du type de données varchar en numérique. instruction SQL serveur INSERT

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

SQL INSERT STATEMENT

J'ai essayé de supprimer les guillemets, mais il me montre toujours la même erreur:

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

Les guillemets simples sont les chaînes littérales. Supprimez-les pour les données numériques. – jarlh

+0

la QTY doit être sans guillemets et les autres données numériques aussi .... supprimer les virgules pour le séparateur de milliers – maSTAShuFu

+2

Bien que les guillemets simples ne sont pas nécessaires pour les valeurs numériques, ils ne provoqueront pas d'erreur s'ils sont utilisés. Mais les virgules vont. –

Répondre

3

Dans toutes vos colonnes numériques, prenez les virgules parmi les valeurs que vous insérez.

+0

Son ne fonctionne toujours pas, j'essaie de cette façon aussi bien je ne sais pas ce que je fais mal UTILISATION CobornSalesDB; GO INSÉRER DANS SalesActivity VALEURS ('AC00001', '05-12-2016', 'AG16170', 'C000001', 'P0001', 'S00002', 1 200 000,00, '', 1,2220, 20,100000 .00, '25 -12-2016 ',' 30-12-2016 ',' 31-12-2016 ',' A000001 ',' PR00001 '); GO –

2

Ceci est votre requête tirée du commentaire. Vous devriez vraiment l'inclure dans la question texte, pas comme image.

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'); 

Dans la définition de la table, nous pouvons voir que valueEUR colonne est numérique. Vous passez une chaîne là. Pas seulement une chaîne, mais une chaîne qui ne peut pas être convertie en nombre. Une chaîne vide '' ne peut pas être convertie en nombre.

Je devine, vous voulez insérer NULL dans ce champ. Donc, vous devriez

  • d'écrire NULL dans l'instruction INSERT.
  • En outre, vous devez supprimer toutes les guillemets autour des nombres afin que le serveur n'ait pas à convertir les chaînes en nombres. En outre, vous devez écrire vos dates au format YYYY-MM-DD. Sinon, un jour vous serez peut-être surpris de voir que le serveur l'a deviné de manière incorrecte et a échangé des mois et des jours.
  • En outre, vous devez répertorier tous les noms de colonne dans l'instruction INSERT. Sinon, votre code va se casser lorsque vous ajoutez une nouvelle colonne à la table.

La requête devrait ressembler à ceci:

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

Salut, j'essaye de faire comme ceci mais donne cette erreur: Msg 102, niveau 15, état 1, ligne 4 Syntaxe incorrecte près de ''. –

+0

@GeorgiGeorgiev, s'il vous plaît mettre à jour la question avec la nouvelle requête que vous essayez d'exécuter. Dans ma réponse, la requête n'a pas du tout '' ''', donc je n'ai aucune idée d'où vous l'avez pris. –

0

Essayez la saisie de date au format mm/jj/aaaa comme ce

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/jj/aaaa est un format ambigu, car en Europe de nombreux pays utilisent le format jj/mm/aaaa. J'irais pour le format aaaa/mm/jj. –

+0

qui peut être formaté lors de la saisie de données –

+0

hi donne maintenant l'erreur meths Msg 102, niveau 15, état 1, ligne 4 Syntaxe incorrecte près de ''. –