Ich benutze phoenix-framework mit postgresql.Wie Datenbank mit uuid suchen?
Für die Implementierung der Suchfunktion verwendete ich ilike
ecto Abfrage und alle Suchfunktionen funktionieren gut. Zum Beispiel habe ich eine Funktion zum Suchen von Produkten mit Produktnamen und es funktioniert gut.
def item_searh_results(language_id, name) do
from(p in ItemLanguage, where: p.language_id == ^language_id
and ilike(p.name, ^("%#{name}%")),
select: %{id: p.item_id,
name: p.name}) |> Repo.all
end
Ich habe ein Modell, Sales
und verwendet uuid
für seine Primärschlüssel.
Ich versuche, Verkäufe zu suchen, indem ich ilike
ecto Query API wie oben Funktion verwende. Also habe ich eine ähnliche Abfrage gemacht.
from(p in Sales, where: ilike(p.id, ^("%#{id}%")))|> Repo.all
Aber es gibt einen Fehler, dass ** (Postgrex.Error) ERROR 42883 (undefined_function): operator does not exist: uuid ~~* unknown
Ist es möglich, ilike
Abfrage zu verwenden, um zu suchen? Wenn ja, was mache ich hier falsch?
Vielen Dank im Voraus.
Ja, das ist, wie ich suchen möchten . Jetzt verstehe ich, dass, um mit UUID zu suchen, ich es in 'Text' konvertieren muss. Ich habe gerade Ihre Lösung versucht, aber es löst einen Fehler aus, dass 'type (p.id(),: text)' kein gültiger Abfrageausdruck ist. Gibt es eine andere Möglichkeit, ihn in Text umzuwandeln? –
Könnten Sie bitte die bearbeitete Version ausprobieren? Ich habe 'type' in' fragment' umgestellt. Ziemlich sicher, das sollte funktionieren. – Dogbert