2014-10-22 4 views
0

와일드 카드를 사용하여 검색에 대한 요청을 받았습니다. SQL2에서 와일드 카드로 검색 쿼리 만들기

나는 다음 쿼리

SELECT * FROM [nt:base] AS p WHERE 
ISDESCENDANTNODE(p, [/home/users/ldap/2]) AND 
p.[sling:resourceType] = 'cq/security/components/profile' AND 
Contains (p.memberOf, 'SUG-pilot-anna') 

을 생성하고 예상대로 작동합니다. 이 쿼리의 작업은 특정 ldap 그룹의 구성원 인 사용자를 찾는 것입니다.

SUG-pilot-anna 
SUG-pilot-berta 
SUG-pilot-ceta 

처럼, 모든 하나의 그룹을 검색 할 일이 많이 있기 때문에

, 그것은 쉽고 와일드 카드를 사용하는 것이 더 효율적이 될 것입니다. 서버 문서에 따르면 LIKE 연산자는 SQL2에서 지원됩니다.

제 질문은 : 와일드 카드로 쿼리가 어떻게 보이나요?

도움/당신의 도움에 감사드립니다.

답변

1

와일드 카드 %을 사용하고 요구 사항을 쿼리 할 수 ​​있습니다.

SELECT * FROM [nt:base] AS p WHERE 
ISDESCENDANTNODE(p, [/home/users/ldap/2]) AND 
p.[sling:resourceType] = 'cq/security/components/profile' AND 
p.memberOf LIKE 'SUG-pilot-%' 

SUG-pilot-로 시작하는 그룹 이름에 속한 사용자의 목록을 반환합니다. ' %'은 0 개 이상의 문자와 일치하고 ' _'은 정확히 한 문자와 일치합니다. 내 인스턴스에서 일하는

정확한 쿼리는 답변에 대한

SELECT * FROM [nt:base] AS p WHERE 
ISDESCENDANTNODE(p, [/home/users/]) AND 
p.[sling:resourceType] = 'cq/security/components/profile' AND 
p.memberOf LIKE '%de%' 
+0

감사했다. 난 그것을 테스트하고 첫 번째 쿼리에 비해 빈 결과 집합을 생성. – reporter

+0

가지고있는 LDAP 프로필이나 확인하려는 memberOf 속성에 대해 확실하지 않습니다. 위에서 기존 속성에 대한 쿼리를 실행 해 보았습니다. 나 같은 것을 포함하고 있습니다. CQ5의 버전은 @reporter를 사용하고 있습니까? – rakhi4110

+0

CQ5.4를 사용하고 있으며 'memberOf'등록 정보가 저장된 ldap 사용자의 프로파일 노드에 있습니다. 'Contains()'를 사용하여 쿼리를 작성 했으므로 작동하지 않습니다. – reporter