【问题标题】:Left join of columns with different datatypes in SlickSlick中具有不同数据类型的列的左连接
【发布时间】:2015-03-25 22:43:16
【问题描述】:

我有一种情况,其中一个表中的一列是Bigint,另一列是varchar。我正在为应用程序使用ScalaSlick。问题是我需要对这两列进行左连接,但由于类型不匹配而出现编译错误。 我可以将 DB 列从 BigInt 更改为 varchar,但是我将不得不在很多地方进行更改。有没有办法可以避免更改表格和相关实体?

【问题讨论】:

    标签: postgresql scala slick


    【解决方案1】:

    您可以将cast整数转成字符串,例如

    LEFT JOIN mytable on myint::text = mytext
    

    你也可以使用CAST(myint as varchar)

    看看here

    【讨论】:

    • 是的,这是在 PG Query 上完成的,对吧?我需要在 Slick 代码中执行此操作。
    • 我放的确实是postgresql代码。恐怕无法帮助您解决 Slick 的问题。
    • 没关系。谢谢。我知道如何在 SQL 中执行,但需要在 Slick 中执行 :(
    【解决方案2】:

    您可以使用其方法asColumnOf 和适当的类型参数来转换类型为Column 的值。这样生成的 sql 也将包含连接条件中的强制转换。

    类似:

    for {
        (a, b) <- aTable.leftJoin(bTable).on(_.someColumn === _.anotherColumn.asColumnOf[Long])
    } yield (a, b)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-30
      • 2021-09-12
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2019-08-15
      相关资源
      最近更新 更多