我试图将JCR节点的string
属性与JCR-SQL2中的double
值进行比较。但它将值比较为string
s。
例如:
SELECT * FROM [nodex] as x where x.propertyY <= 20.50
此处propertyY
是定义中的string
。
我用CASE尝试了这个但是它仍然不起作用。我可以在不更改属性定义的情况下将其与double
进行比较吗?
答案 0 :(得分:0)
标准JCR-SQL2有CAST(value AS DOUBLE)
表达式,但不幸的是它只能在表达式的右侧使用。是的,JCR-SQL2并不像普通的SQL那么灵活。
据我所知,在运行比较之前,没有真正有效的标准方法将属性值转换为double。如果你将double值转换为字符串,你将得到一个词典比较 - 这当然不会非常有用。
我不确定其他实现,但是当属性是残留属性时,ModeShape会将属性值转换为double ,因为残余属性没有定义,因此没有类型。其他实现很可能不会像这样。