当前位置: 首页 > 知识库问答 >
问题:

如何在JCR:SQL2中获取子字符串?

姚实
2023-03-14

我试图解决的用例是:

查找 /apps.下所有组件的所有页面引用

i、 e.首先查找正在使用组件的所有页面,然后对/apps下的所有组件执行此操作。

通过使用Adobe AEM的报表生成器工具:https://adobe-consulting-services.github.io/acs-aem-commons/features/report-builder/configuring.html

查询我正在尝试:

SELECT * FROM [nt:base] AS s 
WHERE [sling:resourceType] IN (SELECT path FROM [cq:Component] AS s WHERE [componentGroup] IS NOT NULL AND ISDESCENDANTNODE([/apps])) 
AND ISDESCENDANTNODE([/content])

背景:我只需要对内部查询的结果集进行消毒。如果不进行消毒,它会吐出表单/apps/acs-Commons/组件/实用程序/报告生成器/列/文本的路径,而外部查询中的sling: resourceType只能接受acs-Commons/组件/实用程序/报告生成器/列/文本。所以我需要从内部查询结果集路径中去掉/apps/

以下是错误消息:

Caused by: java.text.ParseException: Query: SELECT * FROM [nt:base] AS s 
WHERE [sling:resourceType] IN (SELECT(*)CAST(path, AS STRING) FROM [cq:Component] AS s WHERE [componentGroup] IS NOT NULL AND ISDESCENDANTNODE([/apps])) 
AND ISDESCENDANTNODE([/content]); expected: static operand

共有1个答案

姜泳
2023-03-14

我不认为可以使用jcr sql2语法操作结果集,存储的过程通常用于操作类似于PL/SQL的结果集,我在jcr文档中没有找到任何关于这一点的参考。事实上,据我所知,jcr甚至不支持聚合函数,比如MAX()COUNT(),等等

这是一个很好的方法-

SELECT * FROM [nt:unstructured] AS comp
WHERE ISDESCENDANTNODE(comp, "/content/prj")
AND [sling:resourceType] IN ("prj/components/content/accordion","prj/components/content/breadcrumb")

为了加快这个过程,你可以使用文本编辑器,比如记事本,它可以帮助你进行块选择(ctrl-alt-shift,然后单击鼠标左键并拖动以进行选择),删除/apps,添加开始/结束双引号、逗号和替换换行符,将所有内容放在一行中,并构建整个查询。

我想知道其他人的想法,以及这是否可以通过jcr sql2语法实现。

 类似资料:
  • 问题内容: 有没有一种方法可以在Python中对字符串进行子字符串化,以从第三个字符到字符串末尾获取新的字符串? 也许喜欢吗? 如果离开第二部分意味着“直到最后”,而如果离开第一部分,它是否从头开始? 问题答案: Python称这个概念为“切片”,它不仅适用于字符串,还适用于更多的领域。看看这里的一个全面的介绍。

  • 问题内容: 我有一个字符串(基本上是遵循命名约定的文件名) 我想在第一个(即一个点)之前提取子字符串 在java doc api中,我似乎找不到在String中执行此操作的方法。 我想念什么吗?怎么做? 问题答案: 看看和。 确保检查的-1 。

  • 我有两根绳子 在两种情况下,我应该删除

  • 问题内容: 如何将(度)字符转换为字符串? 问题答案: 将此行放在源代码的顶部 如果您的编辑器使用其他编码,请替换为utf-8 然后,您可以直接在源代码中包含utf-8字符

  • 问题内容: 想要改善这篇文章吗? 提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我需要一个函数来返回两个单词(或两个字符)之间的子字符串。我想知道是否有实现该功能的php函数。我不想考虑正则表达式(嗯,我可以做一个,但实际上并不认为这是最好的方法)。思维与功能。这是一个例子: 我们调用该函数: 它返回:“我想要一个蛋糕”。 提前致谢。 更新: 嗯,到

  • 本文向大家介绍如何获取 MongoDB 聚合中的子字符串,包括了如何获取 MongoDB 聚合中的子字符串的使用技巧和注意事项,需要的朋友参考一下 要获取子字符串,请在MongoDB中使用$substr。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是在MongoDB聚合中获取子字符串的查询- 这将产生以下输出-