gpt4 book ai didi

ruby-on-rails - Rails .where() 子句中不区分大小写的匹配

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:10 24 4
gpt4 key购买 nike

我有以下代码:

Test.all.where("comment like '%test%'")

我如何编写此代码以包括所有 Test.comment 类似于“%test%” 的模型,但忽略 test 的大小写。 TestTestingTEST 都应返回。

最佳答案

如果您不关心更改数据库(顺便说一句,它应该是有效的 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%')

关于ruby-on-rails - Rails .where() 子句中不区分大小写的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263491/

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