Sql 使用Jooq按varchar字段(具有数值)对查询进行数字排序

Sql 使用Jooq按varchar字段(具有数值)对查询进行数字排序,sql,sql-order-by,varchar,jooq,Sql,Sql Order By,Varchar,Jooq,如何对varchar字段进行排序,我将ID作为varchar,并希望对其进行数字排序 我们可以在SQL中使用 sql query ... order by 0+id desc 我在Jooq的东西是 SimpleSelectFinalStep<ScoreCardRecord> q = factory.selectFrom(ScoreCard.SCORE_CARD) .orderBy(OloScoreCard.SCORE_CARD_ID.desc

如何对varchar字段进行排序,我将ID作为varchar,并希望对其进行数字排序

我们可以在SQL中使用

sql query ... order by 0+id desc
我在Jooq的东西是

SimpleSelectFinalStep<ScoreCardRecord> q = factory.selectFrom(ScoreCard.SCORE_CARD)
                    .orderBy(OloScoreCard.SCORE_CARD_ID.descending())
                    .limit(0,1);
SimpleSelectFinalStep q=factory.selectFrom(记分卡、记分卡)
.orderBy(OloScoreCard.SCORE\u CARD\u ID.descending())
.限值(0,1);

您是否尝试将
VARCHAR
字段强制转换为数字
数据类型
?你可以这样做:

factory.selectFrom(ScoreCard.SCORE_CARD)
       .orderBy(OloScoreCard.SCORE_CARD_ID.cast(Integer.class).descending())
       .limit(0, 1);

这样,您可以省略使用“普通SQL字段”

您是否尝试将
VARCHAR
字段转换为数字
数据类型?你可以这样做:

factory.selectFrom(ScoreCard.SCORE_CARD)
       .orderBy(OloScoreCard.SCORE_CARD_ID.cast(Integer.class).descending())
       .limit(0, 1);

这样,您就可以省略使用“普通SQL字段”

我已经找到了答案。。。SimpleSelectFinalStep q=factory.selectFrom(ScoreCard.SCORE\u CARD).orderBy(factory.plainSQLField(((0+SCORE\u CARD\u ID)”).descending()).limit(0,1);对不起打扰了任何人!您可以在Stackoverflow上回答自己的问题。这不会打扰任何人。其他有类似问题的读者可能会偶然发现你的答案,这也很有帮助…我已经找到了答案。。。SimpleSelectFinalStep q=factory.selectFrom(ScoreCard.SCORE\u CARD).orderBy(factory.plainSQLField(((0+SCORE\u CARD\u ID)”).descending()).limit(0,1);对不起打扰了任何人!您可以在Stackoverflow上回答自己的问题。这不会打扰任何人。其他有类似问题的读者可能会偶然发现你的答案,这也很有帮助。。。