1

问题

我有一个关于该物业的橡木物业指数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 如何处理带有反斜杠的属性值的任何想法?

4

0 回答 0