我有以下代碼:不區分大小寫匹配。凡()子句
Test.all.where("comment like '%test%'")
我怎麼能寫這包括所有車型,其中Test.comment is like '%test%'
,但忽略test
的情況。 Test
,Testing
和TEST
都應該返回。
我有以下代碼:不區分大小寫匹配。凡()子句
Test.all.where("comment like '%test%'")
我怎麼能寫這包括所有車型,其中Test.comment is like '%test%'
,但忽略test
的情況。 Test
,Testing
和TEST
都應該返回。
如果你不關心更改數據庫(它應該是的方式有效的SQL),你可以做這樣的事情:
Comment.where("LOWER(comments.comment) LIKE LOWER('%test%')")
如果你關心數據庫可移植性,我建議你這個(僅限arel):
comments = Comment.arel_table
Comment.where(comments[:comment].matches("%test%"))
考慮到第二個將忽略直到版本XXX的情況,但我不記得哪個版本。如果您使用的是Rails 3.2.x或Rails 4,那麼您可以使用(在兩者中都進行測試)。
SQL輸出例如
與以往AREL代碼,在PostgreSQL的輸出爲以下之一:
SELECT comments.* FROM comments WHERE (comments.comment ILIKE '%test%')
Test.all.where("comment ilike '%test%'")
獲取測試,這是你想要的所有匹配不區分大小寫的結果。