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中,ILIKELIKE不区分大小写的版本。还有运营商:

~~   .. LIKE
~~*  .. ILIKE
!~~  .. NOT LIKE
!~~* .. NOT ILIKE

这三个表达式在PostgreSQL中实际上是相同的:

name ilike '%w%'
name ~~*   '%w%'
lower(name) like lower('%w%')

最后一行主要适用于SQLitePostgreSQL。我添加了相应手册页的链接。

限制适用:SQLite只能理解ASCII字符的大小写,而PostgreSQL也能理解其他UTF-8字符。

以上是关于PostgreSQL喜欢不返回匹配的实例的主要内容,如果未能解决你的问题,请参考以下文章

前端开发常用js代码片段

前端开发中最常用的JS代码片段

PostgreSQL 查询不返回数据

firebase 的短信代码不匹配

为啥 PostgreSQL 不喜欢大写的表名?

创建片段而不从 java 代码实例化它