【问题标题】:Query Char varying postgres查询 Char 不同的 postgres
【发布时间】:2016-05-12 09:13:41
【问题描述】:

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

   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[]

我收到了错误:

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

【问题讨论】:

  • SELECT * FROM users WHERE roles LIKE '%sales%' - 我想这应该可行。
  • @Thilo 我肯定都试过了," 或 ' 都不起作用
  • 字符变化[],正如问题标题所说:)

标签: sql postgresql char varying


【解决方案1】:

试试

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

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

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

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

【讨论】:

  • any 我记得函数不能用作左参数。
  • 谢谢!我实际上尝试过,但方法错误。 `users.roles = ANY('sales')`。我不习惯这种语法
猜你喜欢
  • 2021-09-02
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多