Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
Elixir / Ecto / Postgres Seleccione varias columnas como una sola

Solo quiero ejecutar una consulta Ecto con una concatenación simple de dos o más columnas.

Creo que el siguiente pseudocódigo de elixir ya muestra lo que intento hacer:

 customers = Customer.undeleted( from c in Customer, select: %{id: c.id, name: c.name <> " – " <> c.street}, order_by: c.name ) |> Repo.all

Me vuelve loco porque en SQL es fácil así: ...SELECT c.id, concat(c.name, ' - ', c,street) AS name

¿Alguna idea de cómo resolver esto con ecto querys?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No puede usar <> en una expresión seleccionada en Ecto. Si quieres llamar a concat así, puedes usar fragment :

 select: %{id: c.id, name: fragment("concat(?, ' - ', ?)", c.name, c.street)},
over 4 years ago · Santiago Trujillo Denunciar

0

Para agregar a la respuesta de @Dogbert, puede limpiar un poco el código colocando el fragmento de la función SQL en una macro personalizada como se describe en los documentos :

 defmodule CustomSQLFunctions do defmacro concat(left, mid, right) do quote do fragment("concat(?, ?, ?)", unquote(left), unquote(mid), unquote(right)) end end end

Luego importe para usar en la consulta

 import CustomSQLFunctions customers = Customer.undeleted( from c in Customer, select: %{id: c.id, name: concat(c.name, ' - ', c.street)}, order_by: c.name ) |> Repo.all
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda