在JCR-SQL2查询中以双精度比较值



我试图将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将属性值转换为双当属性是一个剩余属性,因为剩余属性没有定义,因此没有类型。其他实现很可能不会这样做。

最新更新