Sql server 检查SQL中是否存在excel单元格值
我有一个Excel工作表,其中包含订单的零件号。我想查询零件的SQL表,看看每个零件是否已经存在,如果不存在,在单元格中显示“New”。我已经通过将part_number列从sql导入excel,然后在VLOOKUP上使用IFERROR来显示消息来实现了这一点 随着工作表越来越大,越来越多的工作人员通过VPN进行远程访问,刷新零件号下载所需的时间成为一个问题Sql server 检查SQL中是否存在excel单元格值,sql-server,excel,Sql Server,Excel,我有一个Excel工作表,其中包含订单的零件号。我想查询零件的SQL表,看看每个零件是否已经存在,如果不存在,在单元格中显示“New”。我已经通过将part_number列从sql导入excel,然后在VLOOKUP上使用IFERROR来显示消息来实现了这一点 随着工作表越来越大,越来越多的工作人员通过VPN进行远程访问,刷新零件号下载所需的时间成为一个问题 有没有一种方法可以使用Excel中的sql查询,使用“过去的数字”单元格,返回一个我可以用IF或其他东西测试的值?需要迭代excel工作表
有没有一种方法可以使用Excel中的sql查询,使用“过去的数字”单元格,返回一个我可以用IF或其他东西测试的值?需要迭代excel工作表中的每一行,或者我可以更“设置”一点吗?您可以使用excel中的参数创建动态查询,以仅提取与订单相关的零件号。以下是您的操作方法:
nvarchar(MAX)
类型。在我的测试中,如果我有一个带有nvarchar(MAX)的列,当我将该列导入excel工作表时,我会看到该列的空值
SELECT PartNumbers.[Name] as Name
FROM TestDB.dbo.PartNumbers PartNumbers
WHERE PartNumbers.[Name] in (SELECT value FROM STRING_SPLIT(CAST(? as nvarchar(100)), ','))
注意,我们在上面的SQL查询中有一个问号-它将是筛选零件号的动态参数
=TEXTJOIN(“,”,TRUE,[PartNumberValuesRange])
。[PartNumberValuesRange]必须更改为包含订单中所有零件号的范围此时,您可以使用VLOOKUP+IFERROR方法来显示相应的消息。您在公式中引用的表格将只有零件号的子集,这些零件号在excel和数据库中的顺序中都存在,因此您可以轻松找到数据库中缺少的所有零件号。这将加快您的工作流程,因为您现在不需要从数据库中提取整个表。为什么不在第一次查询表时将其作为一个人工列包含?我认为“遍历每一行并查询数据库以查找匹配项”将比仅拖动部分并执行vlookup慢得多。您的另一个选择是在sql server上创建一个临时表,将excel表加载到临时表中,然后查询以查看现有sql表中缺少哪些临时表,并将结果发送回。从@TabAlleman的角度来看,“包含订单零件号的表格”从何而来?如果它来自同一个sql server,那么您可以在将结果下放到excel之前执行此查询。对不起,各位,我发现我问这个问题的方式很混乱。我有一个带有零件号的EXCEL订单表,我需要根据SQL中的零件号表进行验证。目前,我将零件号列从SQL表导入EXCEL中的隐藏选项卡。然后,我在orders表的一个单元格中使用一个公式,通过SQL导入将vlookup映射到隐藏选项卡。我想看看我是否在不从SQL导入零件号的情况下做了同样的事情,而是查询SQL表以查看零件是否已经存在。Excel没有表格,它有工作表。这就是混乱的根源。我认为您只是在低效地存储数据。您应该将跨国数据存储在数据库表中。这允许根据较小的参考数据集(即产品数据和定价等)快速高效地查询和检查大量数据。哇,超级总结彼得。谢谢我会在今天晚些时候或明天尝试一下。你有吗