如何将 SQL `cast as` 翻译成 Ecto DSL?
How to translate SQL `cast as` to Ecto DSL?
我有以下虚拟查询
SELECT * FROM dummy_table
ORDER BY CAST(number_in_string AS DECIMAL)
Ecto 中怎么写?
您可以order_by
这样的片段:
fragment("CAST(? as DECIMAL)", dt.number_in_string)
from(p in Post, order_by: [asc: fragment("CAST(? as DECIMAL)", p.id)])
生成以下查询:
SELECT p0."id", p0."title", p0."user_id", p0."inserted_at", p0."updated_at" FROM "posts" AS p0 ORDER BY CAST(p0."id" as DECIMAL)
您可以使用 type/2
.
from u in User, where: u.id == type(^"5", :integer)
生成了以下查询
SELECT u0."id", u0."first_name", u0."last_name", u0."email", u0."encrypted_password", u0."inserted_at", u0."updated_at" FROM "users" AS u0 WHERE (u0."id" = ::integer) [5]
我有以下虚拟查询
SELECT * FROM dummy_table
ORDER BY CAST(number_in_string AS DECIMAL)
Ecto 中怎么写?
您可以order_by
这样的片段:
fragment("CAST(? as DECIMAL)", dt.number_in_string)
from(p in Post, order_by: [asc: fragment("CAST(? as DECIMAL)", p.id)])
生成以下查询:
SELECT p0."id", p0."title", p0."user_id", p0."inserted_at", p0."updated_at" FROM "posts" AS p0 ORDER BY CAST(p0."id" as DECIMAL)
您可以使用 type/2
.
from u in User, where: u.id == type(^"5", :integer)
生成了以下查询
SELECT u0."id", u0."first_name", u0."last_name", u0."email", u0."encrypted_password", u0."inserted_at", u0."updated_at" FROM "users" AS u0 WHERE (u0."id" = ::integer) [5]