1

我一直在尝试使以下查询有效,但我做不到:

   SELECT "users".* FROM "users" WHERE (users.roles LIKE "%sales%")
or
   SELECT "users".* FROM "users" WHERE (users.roles LIKE '%sales%')

其中角色,可以包含:

 {operations,business_development,sales,customer_service,manager}

角色是:character varying[]

我收到错误:

错误:运算符不存在:字符变化 [] ~~ 未知第 1 行:从 users.roles LIKE '%sales%'... 的用户中选择 users.id

4

1 回答 1

3

尝试

SELECT "users".* FROM "users" WHERE  'sales' = ANY(users.roles) 

话虽如此,值得注意的是:

提示:数组不是集合;搜索特定的数组元素可能是数据库设计错误的标志。考虑使用一个单独的表,其中每个项目将是一个数组元素。这将更容易搜索,并且对于大量元素可能会更好地扩展。

http://www.postgresql.org/docs/9.5/static/arrays.html

于 2016-05-12T09:46:41.443 回答