使用反斜杠

时间:2016-06-30 09:44:19

标签: jcr jcr-sql2 jackrabbit-oak

问题

我在属性somePath

上有一个oak属性索引

当我在这个属性上执行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' 

正确索引所有内容并使用索引(在Explain Query中可见)

选拔赛

ESCAPE运算符 - FAILURE

我已经尝试使用LIKE命令中的ESCAPE运算符,但这不适用于简单的相等运算符。

转义反斜杠(JCR SQL2) - FAILURE

当我试图像我在一些黑暗的jcr sql2文档(')中找到的那样逃避反斜杠时,我也没有得到任何结果:

select * from [dam:Asset] as d 
where d.[jcr:content/metadata/somePath] =  "F:'\path'\to'\somewhere.jpg" 

逃避反斜杠(Java风格) - FAILURE

当我试图逃避反斜杠java风格时,我也没有得到任何结果:

select * from [dam:Asset] as d 
where d.[jcr:content/metadata/somePath] =  'F:\\path\\to\\somewhere.jpg' 

URL编码反斜杠 - FAILURE

将URL编码应用于字符串,无结果:

select * from [dam:Asset] as d 
where d.[jcr:content/metadata/somePath] =  'F:%5Cpath%5Cto%5Csomewhere.jpg'

使用方括号来转义任何字符 - FAILURE

将值包含在方括号中,就像使用where子句左操作数一样,没有结果(包含和不包含引号):

select * from [dam:Asset] as d 
where d.[jcr:content/metadata/somePath] =  [F:\path\to\somewhere.jpg]

将值转换为String - FAILURE

将值显式转换为String,无结果:

select * from [dam:Asset] as d 
where d.[jcr:content/metadata/somePath] =  CAST('F:\path\to\somewhere.jpg' AS STRING)

使用CONTAINS运算符 - WORKAROUND

当我使用CONTAINS时,我确实得到了结果,但如果可能的话我想避免这种情况。

select * from [dam:Asset] as d 
where ISDESCENDANTNODE(d, '/content/dam') AND CONTAINS(d.* , 'F:\path\to\somewhere.jpg')

有关SQL2如何使用反斜杠处理属性值的任何想法?

0 个答案:

没有答案