问题
我有一个关于该物业的橡木物业指数somePath
当我对此属性执行 SQL2 查询时,如下所示,我得到结果:
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = 'ABC'
但是,当我在此查询中放置带有反斜杠的值时,它找不到任何结果,而元数据中有匹配项。
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = 'F:\path\to\somewhere.jpg'
所有内容都已正确编入索引并且正在使用该索引(在解释查询中可见)
选拔赛
ESCAPE 运算符 - 失败
我已经尝试使用 LIKE 命令中的 ESCAPE 运算符,但这不适用于简单的相等运算符。
转义反斜杠 (JCR SQL2) - 失败
当我尝试像在一些黑暗的 jcr sql2 文档(')中发现的那样转义反斜杠时,我也没有得到任何结果:
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = "F:'\path'\to'\somewhere.jpg"
转义反斜杠(Java 风格) - 失败
当我尝试转义反斜杠 java 样式时,我也没有得到任何结果:
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = 'F:\\path\\to\\somewhere.jpg'
URL 编码反斜杠 - 失败
对字符串应用 URL 编码,没有结果:
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = 'F:%5Cpath%5Cto%5Csomewhere.jpg'
使用方括号转义任何字符 - 失败
将值括在方括号中,就像 where 子句左操作数一样,没有结果(带引号和不带引号):
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = [F:\path\to\somewhere.jpg]
将值转换为字符串 - 失败
将值显式转换为字符串,没有结果:
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = CAST('F:\path\to\somewhere.jpg' AS STRING)
使用 CONTAINS 运算符 - 解决方法
当我使用 CONTAINS 时,我确实得到了结果,但如果可能的话,我想避免这种情况。
select * from [dam:Asset] as d
where ISDESCENDANTNODE(d, '/content/dam') AND CONTAINS(d.* , 'F:\path\to\somewhere.jpg')
关于 SQL2 如何处理带有反斜杠的属性值的任何想法?