我使用 Criteria API 来创建查询,并使用 Hibernate 作为实现。数据库是MS SQL Server 2014。
在我的数据库中,我有一个字符串字段,其中包含数字和字符串。我想将数字与数值进行比较。 在 SQL 中,它会是这样的:
select *
from table
where ISNUMERIC(table.value) and CONVERT(float, table.value) > 5
(不要在函数名称上引用我。)在 Criteria 查询中似乎没有直接的方法来执行此操作,因此我尝试使用 function() 方法:
Expression<Float> convertedExpression = criteria.function("CONVERT", Float.class, criteria.literal(Float.class), baseExpression);
但是这种方法给出了一些无用的错误消息,例如“靠近 ) 的语法不正确”或“@P1 附近的语法不正确”。我认为这是因为传递给该方法的第一个参数,它必须是我想要转换为的类型。
任何帮助使 CONVERT 函数正常工作或完全不同的方法将不胜感激。
最佳答案
将您的列建模为字符串 - 这样您就可以依靠条件 api 来转换为字符串。如果您期望特定的格式 - 这样做 - 我的意思是将您的 float 格式化为特定的字符串,并将其传递给条件。
关于java - 如何使用 Criteria 查询将 String 字段转换为 where 子句中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37007604/