如何在rails中查询数组列?在什么条件?

时间:2015-09-04 06:38:20

标签: mysql ruby-on-rails arrays

我的表t.string :appr_status , type: Array, default: []t.integer :employee_id中有以下列,我当前的查询是

     @reg_req = AttendanceChangeRequest.where("employee_id IN (?)", emp_id_arr).to_a

其中emp_id_arr是一个类似[1,2,3]的数组。我想将上述查询更改为此。

    AttendanceChangeRequest.where('(employee_id IN = ? AND appr_status contain= ?) ', emp_id_arr , appr_array )

其中appr_array = [“1_app”,“2_app”,“3_appr”,“4_appr”]就是这个。我想获取所有记录,当任何一个雇员id出现在emp_id_arr的传递数组中时,appr_status列应该包含传递给查询的数组中的所有值(即{{ 1}})如果一个值也不存在那么我不想要那个记录。如何写这个查询?

3 个答案:

答案 0 :(得分:0)

你需要喜欢

AttendanceChangeRequest.where("'1_app' = ANY (appr_status)")

这将正常工作。

答案 1 :(得分:0)

试试这个:

AttendanceChangeRequest.where(employee_id: emp_id_arr,appr_status: appr_array)

这就是你在寻找什么?

答案 2 :(得分:0)

AttendanceChangeRequest.where(“ array_to_string(appr_status,'||')ILIKE:name”,名称:“%您的期望搜索能力值%”)

这就是您要查找的内容? 该查询会做什么。

  • 这将从表中找到appr_status列具有 数据类型数组包含您期望的给定值。例如 appr_status col具有数组[1,2,3,4]用户想要添加记录 appr_status col,其中每个appr_status数组包含整数3 这里3是您想要的给定值,您可以通过变量或 硬壳