首页 > 解决方案 > 未分组条件的用例表达式

问题描述

如果 USB 设备 ID 匹配,我在查询中使用 case 表达式在自定义列中输出设备描述。每台机器将有多个相同的基本设备ID,因为它们通常是来自制造商的多个设备共享一个USB加密狗或其他东西。

我遇到的问题是两个设备制造商具有相同的基本设备 ID。我不能确切地知道每个完整的设备 ID 以及它属于哪个制造商,我所能做的就是关闭第一部分。制造商之一将在统一接收器的列中列出他们的名称,但不会列出鼠标和/或键盘或任何其他可能显示在计算机上的名称。

这一切都来自win32_usbDevice下的wmi。所以现在我有一个案例表达,如果 deviceid 像 '%XXXXX%' 和制造商像 '%Logitech%' 然后是 'Logitech Unifying Dongle'。但正如我所说的鼠标和键盘或任何其他可能连接的具有相同基本设备 ID 的制造商将只是通用的“标准系统设备”或“标准 USB 主机控制器”等。对于这些我不知道是否属于设备制造商 1 或者如果它属于另一个。我可以假设,如果其中一个匹配基于 id 的设备有罗技作为制造商,那么为该计算机显示的其余设备是罗技输入设备。

这是我在一台机器上得到的结果示例。

在此处输入图像描述

那么有什么方法可以使用 case 或 if 吗?就像如果 deviceid like '%046D&PID_C525B%' 和 [USB Device Name] 不像 '%Logitech%' 但机器名称与 Logitech 返回的同一行相同,则 'Logitech Devices' 以设备描述结尾。

标签: sqlsql-serverif-statementcasedeviceid

解决方案


这看起来像一个复合 USB 设备,其中您有一个父设备(图片中的底部条目)和几个子节点。

我不确定你想用这些信息做什么,但如果你只想将子节点与父节点分开,那么过滤以下内容可能就足够了:

  • deviceid like %046D&PID_C525B&% (这将导致子节点)

  • deviceid like %046D&PID_C525B\% (这将导致父设备)

此外,如果您想唯一标识制造商,您也可以只使用与 Logitech 对应的 Vendor ID (046D)。 https://devicehunt.com/view/type/usb/vendor/046D


推荐阅读