0

我有一个使用通配符进行搜索的请求。

我创建了以下查询

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

, 使用通配符会更容易和更有效。根据一些文档,LIKESQL2 支持该运算符。

我的问题是:如何使用通配符查询查询?

感谢您的帮助/想法。

4

1 回答 1

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-。' % ' 匹配零个或多个字符,而 ' _ ' 匹配一个字符。

在我的实例中工作的确切查询是

SELECT * FROM [nt:base] AS p WHERE
ISDESCENDANTNODE(p, [/home/users/]) AND
p.[sling:resourceType] = 'cq/security/components/profile' AND 
p.memberOf LIKE '%de%'
于 2014-10-22T18:37:28.167 回答