2015-11-19 6 views
3

У меня в настоящее время есть инструкция SQL, которая слишком длинна для моей программы (у меня есть максимальное количество символов, которые я могу использовать. Я использую отчет sccm). Проблема заключается в том, что мой оператор SQL выглядит следующим образом:Группировка нескольких 'AND x not like y' В операторе 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 like ?? с чем-то вроде NOT IN(value1, value2, ...)?

ответ

1

Если вы ОК без хвостовых% в вас шаблоне вы можете заменить его:

SELECT ... WHERE DisplayName0 NOT IN ('hpp','Logitech SetPoint','HP Document Manager',...) 

Это сделало бы это как-то короче.

Но мне кажется, что правильным решением было бы создать таблицу [temp] со всеми именами, которые необходимо фильтровать, а затем присоединиться к ней.

+0

Благодаря используя временную таблицу, решить мою проблему! –

1

Вы могли бы хранить значения в отдельной таблице, а затем ссылаться на него в запросе, как это ?:

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> 
     ) 

 Смежные вопросы

  • Нет связанных вопросов^_^