在SQL2中使用通配符创建搜索查询

时间:2014-10-22 15:57:53

标签: cq5 jcr jcr-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

,使用通配符会更容易,也更有效。根据几个文档,SQL2支持LIKE运算符。

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

感谢您的帮助/想法。

1 个答案:

答案 0 :(得分: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%'