如何在PostgreSQL中对jsonb列类型使用"LIKE"查询?

sjs*_*jsc 4 ruby postgresql ruby-on-rails-3 hstore jsonb

对于PostgreSQL数据库中的hstore列,我知道我可以在Ruby on Rails中使用类似的"LIKE"查询来搜索包含某个字符串的名称:

  Product.where("hstore_data -> 'author' LIKE '%billy%'")
Run Code Online (Sandbox Code Playgroud)

我尝试了jsonb列类型,但得到了这个错误:

ActiveRecord :: StatementInvalid:PG :: UndefinedFunction:ERROR:运算符不存在:jsonb ~~ unknown
HINT:没有运算符匹配给定的名称和参数类型.您可能需要添加显式类型转换.:SELECT"products".*FROM"products"WHERE(jsonb_data - >'author'LIKE'%billy%')

有没有办法正确使用"LIKE"的jsonb列类型?

Raj*_*Das 9

你可以试试这个

希望你有

product.jsonb_data = {
      author: "billynando"
   }
Run Code Online (Sandbox Code Playgroud)

然后

Product.where("jsonb_data ->> :key LIKE :value",
  key: "author", value: "%billy%"
)
Run Code Online (Sandbox Code Playgroud)

更多这里