插入,即使是空白

Posted

技术标签:

【中文标题】插入,即使是空白【英文标题】:Insert Into, even if blank 【发布时间】:2021-06-17 10:33:37 【问题描述】:

我检查过去 18 小时内是否有文件进入。 在同一个表中,检查始终生成文件的位置。这个特定的文件并不总是进来。

我想做的是设置一个 IF/ELSE,所以如果不满足条件,仍然会生成该字段来告诉用户文件不存在,而不是没有记录。

DECLARE @BASE varchar(55) = 'BASE5_017_%'

INSERT INTO @TranTable(Inbound,BatchID,Filename,FileDateTime,TotalCount,IsValid)
select top 1 'BASE', BatchID,Filename,FileDateTime,TotalCount,IsValid from TranBatchFile (nolock)
where Filename like @BASE AND FileDateTime >= DATEADD(HH,@TimeD,@Now) order by 1 desc

这就是我所拥有的。我喜欢的是:

Insert into ....
If this check comes back with something
show the something
else
"nothing here champ, find out what went wrong"

保持 Inbound 字段不变,但其余部分为空白,也许 Filename 字段说找出问题所在

【问题讨论】:

我很困惑。您必须询问操作系统是否有文件可用,而您的代码没有这样做。这些信息是否反映在表格中?如果是这样,您需要解释它是如何工作的。 IF 子句中使用EXISTS"nothing here champ, find out what went wrong"是什么逻辑?您希望那里发生什么? 表格输出显示了通过事件调度程序生成的多个文件(不重要)。上面的代码从TranBatchFile 中提取文件的名称和信息。这个BASE 文件并不总是存在,所以表的输出需要提醒用户,而不是没有记录 永远不要在生产代码中使用ORDER BY <num>。对于一次性查询,它可以节省一些输入,但它是维护的噩梦。在这种情况下,这是一个彻头彻尾的错误,因为您是按值'BASE' 进行排序的,这当然根本就没有排序。 我不明白这有什么关系——事实上你现在有一个不确定顺序的SELECT TOP 1,这意味着你会得到任何与WHERE匹配的记录——引擎的选择。如果您知道不能或不应该有多个记录,您可以省略TOP 1 并稍后检查;如果可能有更多记录并且您确实想要特定的记录,请使用有意义的ORDER BY(如ORDER BY FileDateTime DESC)。 【参考方案1】:

这就是你要找的吗?

insert into test
select id, col2 from test where id = 2
IF @@ROWCOUNT = 0  
insert into test values(2, 'B')

DEMO

【讨论】:

忽略最后一条评论,这是正确的,我在其中一个声明中更改了错误的字段。这很好用 我很乐意提供帮助。我还没有看到最后的评论:)

以上是关于插入,即使是空白的主要内容,如果未能解决你的问题,请参考以下文章

jsp插入数据的时候,页面空白,怎么解决?

Excel 如何批量插入多行空白行

值未插入数组中,数组返回空白值

vim中如何插入空白行而不必要进去insert模式

试图在 XSL-FO 中插入空白页

在 Iphone 的日期选择器中插入空白值