我试图将JCR节点的string
属性与JCR- sql2中的double
值进行比较。但比较的值是string
s。
SELECT * FROM [nodex] as x where x.propertyY <= 20.50
这里的propertyY
是定义中的string
。
我用CASE尝试了这个,但它仍然不起作用。我可以比较它作为double
而不改变属性定义吗?
标准JCR-SQL2有一个CAST(value AS DOUBLE)
表达式,但不幸的是它只能在表达式的右侧使用。是的,JCR-SQL2不像普通SQL那样灵活。
据我所知,在运行比较之前,没有真正有效的标准方法将属性值转换为双精度类型。如果将双精度值强制转换为字符串,则会得到一个字典顺序比较——当然这不是很有用。
我不确定其他实现,但ModeShape将属性值转换为双当属性是一个剩余属性,因为剩余属性没有定义,因此没有类型。其他实现很可能不会这样做。