żadna z tych prac:Jaka jest poprawna składnia Regex w zapytaniu Ecto?
from m in Model, where: m.name == ^~r(/.*#{query}.*/i)
from m in Model, where: m.name =~ ^~r(/.*#{query}.*/i)
Jaka jest poprawna składnia? Nie mogę znaleźć niczego w dokumentach.
żadna z tych prac:Jaka jest poprawna składnia Regex w zapytaniu Ecto?
from m in Model, where: m.name == ^~r(/.*#{query}.*/i)
from m in Model, where: m.name =~ ^~r(/.*#{query}.*/i)
Jaka jest poprawna składnia? Nie mogę znaleźć niczego w dokumentach.
Od starasz się dopasować wielkość liter ma znaczenie wyrażenia, należy użyć ilike/2
który wykorzystuje SQL LIKE operator:
from m in Model, where: ilike(m.name, "%#{query}%")
like/2
będą wykorzystywane do wrażliwej przypadku wyszukiwania.
Ecto nie obsługuje wyrażeń regularnych po wyjęciu z pudełka, ponieważ implementacje różnią się bardzo między różnymi bazami danych. To, co musisz zrobić, to zajrzeć do składni wyrażenia regularnego dla bazy danych, na którą kierujesz cel i samodzielnie zbudować tę część zapytania, używając Ecto fragment/1
. W poniższym przykładzie, który przeszukuje dla wszystkich modeli pasujących /^Peter [A-Z]$/
wykorzystuje PostgreSQL's POSIX regex feature:
from m in Model, where: fragment('? ~ ?', m.name, '^Peter [A-Z]$')
Dzięki! Zapomniałem o tym wcześniej. –