gpt4 book ai didi

sql - 使用 HQL 的 varchar 列的最大值

转载 作者:行者123 更新时间:2023-12-04 16:11:37 25 4
gpt4 key购买 nike

我正在尝试使用休眠查询语言在 mySQL DB 中查找 varchar 列的最大值。

这是我正在尝试执行的查询,这在 native SQL 中运行良好:

select max(cast(rs.marks as unsigned)) from Results rs;

其中 column:marks 是一个 varchar。

假设列标记(其中所有值都保存为文本)具有以下行:
65
75
82
41

然后查询应该返回一个唯一的结果“82”。
但是当我在 HQL 中编写相同的内容时,它不起作用。任何人都可以通过告诉我如何在 Hibernate 中编写它来帮助我吗?

控制台说:

java.lang.IllegalStateException:节点没有数据类型:org.hibernate.hql.ast.tree.AggregateNode
[AGGREGATE] 聚合节点:'最大'
[METHOD_CALL] MethodNode: '('
[METHOD_NAME] IdentNode: 'cast' {originalText=cast}
[EXPR_LIST] SqlNode: 'exprList'
[DOT] 点节点:'results0_.marks_'
{propertyName=marks,dereferenceType=4,propertyPath=marks,path={synthetic-alias}.marks,tableAlias=results0_,className=com.Results,classAlias=rs}
[IDENT] IdentNode: '{synthetic-alias}' {originalText={synthetic-alias}}
[IDENT] IdentNode: 'marks' {originalText=marks}
[IDENT] IdentNode: 'unsigned' {originalText=unsigned}

最佳答案

遇到这个问题并决定回答,尽管它很老了。

首先这足以获得 MAX 值

SELECT MAX(marks) max_value FROM Results;

其次没有 UNSIGNED HSQL 中的关键字。因此如果结果值需要转换为 INT
SELECT CAST(MAX(marks) AS INT) max_value FROM Results;

关于sql - 使用 HQL 的 varchar 列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7799155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com