Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL语句中分组多个“x”和“不象y”_Sql_Sccm - Fatal编程技术网

在SQL语句中分组多个“x”和“不象y”

在SQL语句中分组多个“x”和“不象y”,sql,sccm,Sql,Sccm,我目前有一个SQL语句对于我的程序来说太长了,我有一个可以使用的最大字符数。我正在使用sccm报告。问题是我的SQL语句如下所示: Select distinct v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0, v_GS_ADD_REMOVE_PROGRAMS_64.Publisher0, v_GS_ADD_REMOVE_PROGRAMS_64.Version0 FROM v_GS_ADD_REMOVE_PROGRAMS_64 JOIN v_R_Syste

我目前有一个SQL语句对于我的程序来说太长了,我有一个可以使用的最大字符数。我正在使用sccm报告。问题是我的SQL语句如下所示:

Select distinct v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0, v_GS_ADD_REMOVE_PROGRAMS_64.Publisher0, v_GS_ADD_REMOVE_PROGRAMS_64.Version0
FROM v_GS_ADD_REMOVE_PROGRAMS_64 
JOIN  v_R_System ON v_GS_ADD_REMOVE_PROGRAMS_64.ResourceID = v_R_System.ResourceID 
WHERE (v_R_System.Netbios_Name0 = @computername)

DisplayName0 NOT LIKE 'hpp%'
AND
DisplayName0 NOT LIKE 'Logitech SetPoint%'
AND
DisplayName0 NOT LIKE 'HP Document Manager%'
AND
DisplayName0 NOT LIKE 'HP Imaging Device Functions%'
AND
DisplayName0 NOT LIKE 'PyQt4 - PyQwt5%'

它持续了20页。如何最大限度地减少此请求包含的代码量?是否有一种方法可以将所有displayName0分组,而不是像??使用类似于NOT INvalue1、value2等的选项?

如果您在模式中没有拖尾%的问题,则可以将其替换为:

SELECT ... WHERE DisplayName0 NOT IN ('hpp','Logitech SetPoint','HP Document Manager',...)
它会让它变得更短


但在我看来,正确的解决方案是创建一个包含所有需要筛选的名称的[temp]表,然后将其联接。

您能将这些值存储在一个单独的表中,然后像这样在查询中引用它吗?:

 SELECT DISTINCT v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0
    ,v_GS_ADD_REMOVE_PROGRAMS_64.Publisher0
    ,v_GS_ADD_REMOVE_PROGRAMS_64.Version0
FROM v_GS_ADD_REMOVE_PROGRAMS_64
JOIN v_R_System ON v_GS_ADD_REMOVE_PROGRAMS_64.ResourceID = v_R_System.ResourceID
WHERE (v_R_System.Netbios_Name0 = @computername) DisplayName0 NOT IN (
        SELECT DisplayName0
        FROM < NewTableName >
        )