PostgreSQL 喜欢不返回匹配的实例

标签 postgresql sqlite pattern-matching sql-like

PostrgeSQL like 函数是如何工作的?我正在使用 token 输入来限制用户仅使用现有值的输入。

我在数据库中有以下值:

  `Yellow, White, Orange...`

我的代码

 @colors = Color.where("name like ?", "%#{params[:q]}%")

如果我输入 w 例如 White 是不建议的。我必须输入第二个字母才能看到怀特提议。因为 Db 值都以大写字母开头,所以我怀疑与 SQLite 有所不同。

我找到了这个 post其中提到了 ILIKE 但想知道是否有一些通用代码可以同时用于 Postgres 和 SQLite。

最佳答案

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 喜欢不返回匹配的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218086/

相关文章:

Python字符串匹配完全等于Postgresql相似度函数

SQLite - 复杂查询

python - 在 sqlalchemy 中进行自然连接

regex - 使用正则表达式提取部分字符串并将其分配给变量 scala

python - SQLAlchemy 在 MySQL 上将什么列类型用于 "Text"?

postgresql - 时间类型精度

java - 是否可以在 OrmLite 持久化的类中有一个枚举字段?

haskell - Haskell 是否允许使用 let 表达式进行多个模式匹配?

Scala:嵌套类型层次结构上的模式匹配

postgresql - 机器人框架 : Database library keywords not getting executed