我正在尝试为 Altiris 报告编写查询。此查询正在查找机器信息。查询工作正常,但我遇到的问题是我的参数。我在 Altiris 中设置了多个参数,以允许我在报告中过滤和搜索多个字段。然后,在我的查询中,我将这些参数添加到WHERE
语句中。
在我添加Make
和Model
参数之前,所有参数都工作正常。我们有很多机器没有将信息填充到这些字段中。因此,当我添加 时WHERE xxxx LIKE N'%Make%'
,我失去了大约 500 台基于它的机器,现在只寻找具有该领域某些东西的机器。我尝试通过添加如下行来解决此问题:
Where ((xxxx LIKE N'%Make%' OR xxxx is null))
这种工作,现在报告显示所有机器......但是如果我在Make
参数字段中输入“HP”然后重新运行报告......它显示了我想要的所有HP机器,而且所有的空机器也是如此。
如何重写我的 where 语句,以便它们不排除报告中的机器,并允许我按所有 HP 机器进行过滤,而不显示空值?
希望这是有道理的,谢谢
在这段代码中,最后两行让我在报告的机器总数中损失了大约 500 台机器。它省略了所有具有空值的机器。
WHERE
(dbo.OS_Version.[OS Name] LIKE N'%OSName%') AND
(dbo.OS_Version.[OS Version] LIKE N'%Build%') AND
(dbo.OS_Version.Name LIKE N'%Name%') AND
(dbo.Inv_AeX_AC_Identification.[Hardware Serial Number] LIKE N'%Serial%') AND
(dbo.vHWComputerSystem.Manufacturer LIKE N'%Make%') AND
(dbo.vHWComputerSystem.Model LIKE N'%Model%')
这就是我试图修复它的方法,现在我得到了所有 20,000 台机器。但我的品牌/型号字段也报告空字段。
WHERE
(dbo.OS_Version.[OS Name] LIKE N'%OSName%') AND
(dbo.OS_Version.[OS Version] LIKE N'%Build%') AND
(dbo.OS_Version.Name LIKE N'%Name%') AND
(dbo.Inv_AeX_AC_Identification.[Hardware Serial Number] LIKE N'%Serial%') AND
((dbo.vHWComputerSystem.Manufacturer LIKE N'%Make%') OR (dbo.vHWComputerSystem.Manufacturer is null)) AND
((dbo.vHWComputerSystem.Model LIKE N'%Model%') OR (dbo.vHWComputerSystem.Model is null))