使用 PostgreSQL 在 SORM 中进行非敏感搜索
Non sensitive search in SORM with PostgreSQL
如何使用 SORM 和 PostgreSQL 在数据库中进行非敏感搜索?
我试过 whereLike
:
DB.query[User].whereLike("fullname", "%" + term + "%").fetch()
这会执行区分大小写的搜索。 PostreSQL 支持 ILIKE
运算符,但在 SORM DSL API.
中没有找到 ILIKE
函数
我也试过 whereRegex
:
DB.query[User].whereRegex("fullname", term).fetch()
这returns一个错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "REGEXP"
Acording 到文档 PostgreSQL 不使用 REGEXP
运算符,它使用 ~ (tilda) 运算符。据我了解,这会导致错误。我想用正则表达式执行这样的操作:
SELECT "fullname" FROM "user" WHERE "fullname" ~ 'john';
谢谢!
正则表达式在 Postgres 中不起作用是一个错误,现在已在 0.3.17 版中修复。感谢您发现这一点。
关于区分大小写,Postgres 似乎也对正则表达式使用了不同的运算符。嗯。看起来目前没有办法用 Postgres 做到这一点。 SORM需要引入合适的算子,欢迎投稿
如何使用 SORM 和 PostgreSQL 在数据库中进行非敏感搜索?
我试过 whereLike
:
DB.query[User].whereLike("fullname", "%" + term + "%").fetch()
这会执行区分大小写的搜索。 PostreSQL 支持 ILIKE
运算符,但在 SORM DSL API.
ILIKE
函数
我也试过 whereRegex
:
DB.query[User].whereRegex("fullname", term).fetch()
这returns一个错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "REGEXP"
Acording 到文档 PostgreSQL 不使用 REGEXP
运算符,它使用 ~ (tilda) 运算符。据我了解,这会导致错误。我想用正则表达式执行这样的操作:
SELECT "fullname" FROM "user" WHERE "fullname" ~ 'john';
谢谢!
正则表达式在 Postgres 中不起作用是一个错误,现在已在 0.3.17 版中修复。感谢您发现这一点。
关于区分大小写,Postgres 似乎也对正则表达式使用了不同的运算符。嗯。看起来目前没有办法用 Postgres 做到这一点。 SORM需要引入合适的算子,欢迎投稿