当前位置: 首页 > 知识库问答 >
问题:

jooq字符串到整数的转换

计向晨
2023-03-14

我是Jooq的新手。我想把字符串转换成整数。

表1中定义:-

TableField<?, Integer> city_id;

表2中定义:-

TableField<?, String> city_id;

在select query中。

dsl.select()
   .from(Table1)
   .leftOuterJoin(Table2)
   .on(Table1.city_id.eq(Table2.city_id))
   .fetch();

因为city_id在Table1和TABLE2中的格式不同。所以它需要转换table2的city_id,从字符串到整数,反之亦然,我尝试了Integer.valueOf(),我nteger.parseInt(),不工作。

感谢您的帮助。提前谢谢。

共有2个答案

麹浩瀚
2023-03-14

Koshux提供了一个很好的答案,您可能应该使用它,因为明确地转换类型不会让转换成为偶然。您可以选择自己是否:

  • 数值列强制转换为字符串类型
  • 字符串列强制转换为数字类型

我只是展示了另外两种选择:

有一个字段。强制()方法,该方法将jOOQ字段引用“强制”到不同的类型,而不会对生成的SQL产生任何影响。例如。:

dsl.select()
   .from(Table1)
   .leftOuterJoin(Table2)
   .on(Table1.city_id.eq(Table2.city_id.coerce(Table1.city_id)))
   .fetch();

与强制一样,您可以使用rawtype强制转换来实现相同的效果(除非您使用的是转换器或数据类型绑定):

dsl.select()
   .from(Table1)
   .leftOuterJoin(Table2)
   .on(Table1.city_id.eq((Field) Table2.city_id))
   .fetch();

当然,最好在两个表中使用相同的类型,并使用实际的外键约束来强制完整性。

章安宜
2023-03-14

jOOQ文档(https://www.jooq.org/doc/latest/manual/sql-building/column-expressions/cast-expressions/)描述了cast()的用法,它可以在语句中用于将字段转换为另一种类型。

使用您的示例:

表1中定义:-

TableField<?, Integer> city_id;

表2中定义:-

TableField<?, String> city_id;

在select query中。

dsl.select()
   .from(Table1)
   .leftOuterJoin(Table2)
   .on(Table1.city_id.eq(Table2.city_id))
   .fetch();

使用cast将整数转换为字符串的语句:

dsl.select()
   .from(Table1)
   .leftOuterJoin(Table2)
   .on(Table1.city_id.cast(String.class).eq(Table2.city_id))
   .fetch();
 类似资料:
  • 我正在制作一个模拟制表方法(Quine McCluskey)的程序,并试图将字符串格式的输入转换为整数格式,最后再转换为字符串(二进制格式)格式。 编辑:我忘了包括这个方法…

  • 可能重复: 如何在Java中将字符串转换为int? 我试图弄清楚如何将一个包含整数的字符串转换为一个整数变量。 代码: 我想将、和转换为整数。

  • 我让用户输入一个数字字符串,然后for循环应该从字符串中挑出每个数字,并将其添加到数组列表中。我相信有人能很快帮到我 我的问题如下。当我打印出数组列表中的所有值时,它打印出的数字要高得多,例如1234=49 50 51 52。 我认为现在的情况是,它正在打印ASCII值,而不是数字本身。有人能指出发生这种情况的地点和原因吗? 我尝试将变量barcodeNumberAtI更改为char,这会产生相同

  • 我正在使用jooq的DSL。在我的Java代码中选择,我有需要从字符串中确定索引的场景。使用获取所需的索引值作为字符串,但DSL中不支持将其转换为数字的方法。示例: 嵌套的子字符串需要转换为数字

  • 我想转换一个组织。阿帕奇。火花sql。数据框到组织。阿帕奇。火花rdd。RDD[(字符串,字符串)]在数据块中。有人能帮忙吗? 背景(也欢迎使用更好的解决方案):我有一个Kafka流,它(经过一些步骤)变成了2列数据帧。我想将其放入Redis缓存,第一列作为键,第二列作为值。 更具体地说,输入的类型是:。我尝试将以下内容放入Redis: 错误消息如下所示: 我已经尝试过一些想法(比如函数、rdd)

  • 题目描述 输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串”123”,输出整数123。 给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi。 分析与解法 本题考查的实际上就是字符串转换成整数的问题,或者说是要你自行实现atoi函数。那如何实现把表示整数的字符串正确地转换成整数呢?以”123”作为例子: 当我