gpt4 book ai didi

mysql - 我可以在 Rails .where() 中使用正则表达式吗?

转载 作者:可可西里 更新时间:2023-11-01 07:58:59 25 4
gpt4 key购买 nike

我有一个显示各种艺术家首字母的菜单:

A B C D E F ...

它基本上是一种通过名字的首字母过滤许多艺术家的方法。

有些问题以符号、数字或 [a-z] 以外的任何内容开头。

所以我希望它是

# A B C D E F ...

但是我该如何使用我的 where 子句让它发挥作用呢?

filter_letter = (params[:letter] =~ /[a-z]/i ? params[:letter] : "something_here" )

@artists = Artist.where("name LIKE ?", "#{filter_letter}%")

最佳答案

由于您使用的是 mysql,因此可以利用它对正则表达式的支持。您需要切换到 RLIKE 运算符并相应地调整您的操作数。

例如,使用您现有的结构,您可以使用以下内容

filter_letter = (params[:letter] =~ /[a-z]/i ? params[:letter] : "[^a-z]" )
@artists = Artist.where("name RLIKE ?", "^#{filter_letter}")

参见 http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html了解更多信息。需要特别注意的是,mysql 正则表达式不区分大小写,因此您无需担心该问题。

关于mysql - 我可以在 Rails .where() 中使用正则表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314086/

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