PostrgeSQL like
函数是如何工作的?我正在使用 token 输入来限制用户仅使用现有值的输入。
我在数据库中有以下值:
`Yellow, White, Orange...`
我的代码
@colors = Color.where("name like ?", "%#{params[:q]}%")
如果我输入 w
例如 White
是不建议的。我必须输入第二个字母才能看到怀特提议。因为 Db 值都以大写字母开头,所以我怀疑与 SQLite 有所不同。
我找到了这个 post其中提到了 ILIKE
但想知道是否有一些通用代码可以同时用于 Postgres 和 SQLite。
最佳答案
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 喜欢不返回匹配的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218086/