首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含可选列的WQL SELECT

包含可选列的WQL SELECT
EN

Stack Overflow用户
提问于 2010-03-11 20:41:22
回答 4查看 2.2K关注 0票数 1

我需要像这样查询:

代码语言:javascript
复制
SELECT PNPDeviceID FROM Win32_NetworkAdapter WHERE AdapterTypeId = 0

问题是,AdapterTypeId列并不总是存在的。在本例中,我只想要所有的东西,如下所示:

代码语言:javascript
复制
SELECT PNPDeviceID FROM Win32_NetworkAdapter

我的WQL/SQL知识非常有限。有人能告诉我如何在一个查询中做到这一点吗?

编辑:

似乎需要更多的背景知识:我正在使用WMI查询Windows中的设备信息,WMI使用类似SQL的语法。因此,在我的示例中,我查询的是AdapterTypeId为0的网络适配器。

然而,该列并不总是存在的,这意味着如果我枚举返回值,则不会列出"AdapterTypeId“。

编辑2:

将SQL更改为WQL;显然这更正确。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-11 20:43:19

我假设您的意思是底层架构是不可靠的。

这是一种非常非常规的情况。我建议您解决导致列不总是存在的问题,因为让模式在应用程序下面动态更改可能(几乎可以肯定)是灾难性的。

更新:

好的,WQL允许您使用类似SQL的语法查询对象,但与SQL不同的是,模式可以在您的脚下更改。这是一个经典的leaky abstraction示例,我现在讨厌WQL,因为我从未使用过它:)。

由于可用的属性在不断变化,我猜测WQL提供了一种枚举给定适配器的属性的方法。执行此操作,并根据结果选择要运行的查询。

在谷歌搜索之后,有一个示例here,它展示了如何枚举可用的属性。您可以使用它来确定AdapterTypeId是否存在。

票数 5
EN

Stack Overflow用户

发布于 2010-03-11 20:43:44

代码语言:javascript
复制
SELECT PNPDeviceID FROM Win32_NetworkAdapter WHERE AdapterTypeId = {yourDesire} OR AdapterTypeId IS NULL
票数 2
EN

Stack Overflow用户

发布于 2010-03-11 21:00:23

我假设您的意思是表中缺少此字段。在提交查询之前,您是否知道该字段是否存在?如果是,那么就动态创建SQL,否则它会认为在缺少字段情况下会出现语法错误

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2424914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档