喜欢查询 Integer 主键 Id

Like query on Integer primary key Id

实际上我会写

query = from q in CustomerModel, where: like(q.id, "%1")
#Ecto.Query<from c in Qber.V1.CustomerModel, where: like(c.id, "%1")>

当我 运行 这个查询时,我得到

(undefined_function): operator does not exist: integer ~~ unknown

从这个 question 我得到的想法是在 上应用 Like 之前我必须 Cast编号。所以在 Postgres 中,我可以简单地将此查询写为

SELECT * FROM customers WHERE CAST(id AS TEXT) LIKE '1%';

如何在应用前在 ecto 中应用 cast 赞?

您可以使用 fragment 创建与您想要的相同的查询:

query =
  from q in CustomerModel,
    where: like(fragment("CAST(? AS TEXT)", q.id), "1%")