среда, 30 июня 2010 г.

Запрос, возвращающий имена рабочих станций

Во всех стандартных отчетах используется следующий запрос для перечня списков компьютеров или других объектов:

begin
if (@__filterwildcard = '')
SELECT DISTINCT SYS.Netbios_Name0 from v_R_System SYS WHERE SYS.Client0=1 ORDER By SYS.Netbios_Name0
else
SELECT DISTINCT SYS.Netbios_Name0 from v_R_System SYS WHERE SYS.Client0=1
and SYS.Netbios_Name0 like @__filterwildcard
ORDER By SYS.Netbios_Name0
end

Он имеет много минусов. Например, для поиска компьютеров, начинающихся с "de" необходимо каждый раз ставить знак %: "de%". Также использование в данном запросе ключевых слов DISTINCT и ORDER BY вообще не имеет смысла.
Напрашивается более легковесный и удобный вариант:

select Name0
from v_R_System
where ((Name0 like @__filterwildcard+'%') or (Name0 like @__filterwildcard)) and Client0=1
group by Name0

Пользуйтесь на здоровье :)

Комментариев нет:

Отправить комментарий