2016-08-12 5 views

答えて

7

あなたは大文字小文字を区別しないフレーズに一致するようにしようとしているので、あなたは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]$') 
+0

感謝を!先日これを受け入れるのを忘れてしまった。 –

関連する問題