我有以下查询字符串:
SELECT jcr:title, jcr:created, jcr:description FROM cq:PageContent WHERE jcr:path LIKE '/content/.../%' AND CONTAINS (., '*') ORDER BY date ASC
问题是查询正在返回给定路径中的所有节点,即使它们在任何属性中都没有星号。我想转义星号字符,但结果是一样的。我试过这样的事情:
SELECT jcr:title, jcr:created, jcr:description FROM cq:PageContent WHERE jcr:path LIKE '/content/.../%' AND CONTAINS (., '\*') ORDER BY date ASC
甚至是这样的:
SELECT jcr:title, jcr:created, jcr:description FROM cq:PageContent WHERE jcr:path LIKE '/content/.../%' AND CONTAINS (., '\*\*\*\*\*\*\*\*\*\*\*') ORDER BY date ASC
在所有这些查询中,结果是相同的,即使这些页面都没有包含星号字符的属性(或其中 11 个)
jcr:contains 函数的文档说:
在单引号 (“'”) 的 searchexp 文字实例中,双引号 (“"”) 和连字符 (“-”) 必须用反斜杠 (“\”) 转义。因此,反斜杠本身也必须转义,以结束作为双反斜杠(“\”)。
没有提到其他字符*
,因此即使没有任何转义(?),它也应该可以工作。请让我理解为什么我在这里得到这样的结果以及如何正确地转义这些字符。