:EctoクエリのRegexの正しい構文は何ですか?どちらもこれらの作業の
from m in Model, where: m.name == ^~r(/.*#{query}.*/i)
from m in Model, where: m.name =~ ^~r(/.*#{query}.*/i)
正しい構文は何ですか?私はドキュメントで何かを見つけることができません。
:EctoクエリのRegexの正しい構文は何ですか?どちらもこれらの作業の
from m in Model, where: m.name == ^~r(/.*#{query}.*/i)
from m in Model, where: m.name =~ ^~r(/.*#{query}.*/i)
正しい構文は何ですか?私はドキュメントで何かを見つけることができません。
あなたは大文字小文字を区別しないフレーズに一致するようにしようとしているので、あなたはSQL LIKE operatorを使用するilike/2
を使用する必要があります。
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]$')
感謝を!先日これを受け入れるのを忘れてしまった。 –