我在属性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'
正确索引所有内容并使用索引(在Explain Query中可见)
我已经尝试使用LIKE命令中的ESCAPE运算符,但这不适用于简单的相等运算符。
当我试图像我在一些黑暗的jcr sql2文档(')中找到的那样逃避反斜杠时,我也没有得到任何结果:
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = "F:'\path'\to'\somewhere.jpg"
当我试图逃避反斜杠java风格时,我也没有得到任何结果:
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = 'F:\\path\\to\\somewhere.jpg'
将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]
将值显式转换为String,无结果:
select * from [dam:Asset] as d
where d.[jcr:content/metadata/somePath] = CAST('F:\path\to\somewhere.jpg' AS STRING)
当我使用CONTAINS时,我确实得到了结果,但如果可能的话我想避免这种情况。
select * from [dam:Asset] as d
where ISDESCENDANTNODE(d, '/content/dam') AND CONTAINS(d.* , 'F:\path\to\somewhere.jpg')
有关SQL2如何使用反斜杠处理属性值的任何想法?