2017-08-11 4 views
3

Existe-t-il un moyen d'insérer une chaîne vide ('') dans une colonne de type decimal?Comment insérer une chaîne vide ('') en décimal ou numérique dans SQL Server?

Ceci est pour l'exemple:

create table #temp_table 
(
    id varchar(8) NULL, 
    model varchar(20) NULL, 
    Plandate date NULL, 
    plan_qty decimal (18, 0) NULL, 
    Remark varchar (50) NULL, 
) 

insert into #temp_table (id, model, Plandate, plan_qty, Remark) 
values ('pn-01', 'model-01', '2017-04-01', '', 'Fresh And Manual') 

Je reçois une erreur

Erreur de conversion type de données varchar numérique. Mes données sont extraites d'un fichier Excel et comportent des cellules vides.

Mes données proviennent d'un fichier Excel.

Ma requête a lu cela sous la forme d'une chaîne vide.

S'il y a un moyen, aidez s'il vous plaît.

Merci

+0

Qu'est-ce que vous utilisez pour insérer les données d'un fichier Excel dans votre tableau? – Randolph

+0

J'utilise Bulk Copy dans une table temporaire, puis j'insère les données dans la table de destination. Ma requête utilisée par mon développeur dans VB.Net et obtient une erreur lors de la compilation. mais c'est déjà résolu. merci pour votre préoccupation. –

Répondre

2

D'après vos commentaires que vous avez juste besoin d'une déclaration de cas à votre insérer à partir d'Excel, que je suppose utilise la requête ouverte ou l'insertion en vrac.

Insert into #temp_table (id, model, Plandate, plan_qty, Remark) 
Select 
... 
Case when someColumn = '' then null else someColumn end 
... 
From 
--your excel file via openquery or whatever ... 
+0

merci pour votre réponse, je vais essayer –

0

Vous ne pouvez pas insérer une chaîne vide dans un champ numérique. Vous pouvez insérer NULL:

insert into #temp_table (id, model, Plandate, plan_qty, Remark) 
    values ('112325', '10TPB220MC', '2017-04-01', NULL, 'Fresh And Manual'); 

Bien sûr, la valeur par défaut par défaut est NULL, de sorte que vous pouvez simplement le laisser sur:

insert into #temp_table (id, model, Plandate, Remark) 
    values ('112325', '10TPB220MC', '2017-04-01', 'Fresh And Manual'); 
+0

merci, j'ai essayé celui-ci et c'est OK. mais mes données proviennent d'un fichier Excel et il y a une cellule vide et ma requête le lit comme une chaîne vide. –