PostgreSQL喜欢不返回匹配的实例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL喜欢不返回匹配的实例相关的知识,希望对你有一定的参考价值。
PostgreSQL like
函数如何工作?我正在使用令牌输入来限制用户仅使用现有值的输入。
我在DB中有以下值:
`Yellow, White, Orange...`
我的守则
@colors = Color.where("name like ?", "%#{params[:q]}%")
如果我输入w
例如White
不建议。我必须在第二封信中输入白色建议。因为Db值全部以大写字母开头,所以我怀疑与SQLite有所不同。
我发现这个post提到ILIKE
但是想知道是否有一些与Postgres和SQLite兼容的通用代码。
答案
LIKE的区分大小写取决于您使用的数据库。有些数据库在使用LIKE时会忽略大小写,有些则不会,有些会查看各种配置选项。解决这个问题的一种方法是通过转换为大写或小写来自己规范化案例:
@colors = Color.where("lower(name) like ?", "%#{params[:q].downcase}%")
另一答案
SQLite LIKE
运算符默认情况下不区分大小写。
在PostgreSQL中,ILIKE
是LIKE
不区分大小写的版本。还有运营商:
~~ .. LIKE
~~* .. ILIKE
!~~ .. NOT LIKE
!~~* .. NOT ILIKE
这三个表达式在PostgreSQL中实际上是相同的:
name ilike '%w%'
name ~~* '%w%'
lower(name) like lower('%w%')
最后一行主要适用于SQLite和PostgreSQL。我添加了相应手册页的链接。
限制适用:SQLite只能理解ASCII字符的大小写,而PostgreSQL也能理解其他UTF-8字符。
以上是关于PostgreSQL喜欢不返回匹配的实例的主要内容,如果未能解决你的问题,请参考以下文章