5
無論這些工作:Ecto查詢中正則表達式的正確語法是什麼?
from m in Model, where: m.name == ^~r(/.*#{query}.*/i)
from m in Model, where: m.name =~ ^~r(/.*#{query}.*/i)
什麼是正確的語法?我無法在文檔中找到任何內容。
無論這些工作:Ecto查詢中正則表達式的正確語法是什麼?
from m in Model, where: m.name == ^~r(/.*#{query}.*/i)
from m in Model, where: m.name =~ ^~r(/.*#{query}.*/i)
什麼是正確的語法?我無法在文檔中找到任何內容。
既然你試圖匹配不區分大小寫的短語,你應該使用ilike/2
它使用SQL LIKE operator:
from m in Model, where: ilike(m.name, "%#{query}%")
like/2
將被用於區分大小寫的搜索。
Ecto不支持正則表達式,因爲實現在數據庫之間變化很大。你需要做的是查看你的目標數據庫的正則表達式語法,並使用Ecto fragment/1
自己構建查詢的這一部分。下面的示例搜索與/^Peter [A-Z]$/
匹配的所有模型,使用PostgreSQL's POSIX regex feature:
from m in Model, where: fragment('? ~ ?', m.name, '^Peter [A-Z]$')
謝謝!有一天忘了接受這個。 –