gpt4 book ai didi

elixir - Ecto 查询中正则表达式的正确语法是什么?

转载 作者:行者123 更新时间:2023-12-04 10:35:36 27 4
gpt4 key购买 nike

这些都不起作用:
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]$')

关于elixir - Ecto 查询中正则表达式的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38909343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com