如何在 SQL Server 中向小数或数字插入空字符串 (' ')?

问题描述 投票:0回答:3

有没有办法将空字符串('')插入到

decimal
类型的列中?

这是示例:

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

我收到错误

将数据类型 varchar 转换为数字时出错。

我的数据来自 Excel 文件,有一些空白单元格。

我的查询将其读取为空字符串。

如果有办法,请帮忙。

谢谢

sql sql-server string decimal numeric
3个回答
3
投票

根据您的评论,您只需要从 Excel 插入一个 case 表达式,我认为这是使用开放查询或批量插入。

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 ...

    

1
投票

您无法将空的 string 插入数字字段。 您可以插入

NULL
:

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

当然,默认的默认值是

NULL
,所以你也可以不写:

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

0
投票

正如前面提到的,可以插入 NULL 而不是空字符串,因此还有一种选择是使用 NULLIF。对于你的情况:

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

相关:将空字符串插入 SQL Server 的 INT 列

© www.soinside.com 2019 - 2024. All rights reserved.