gpt4 book ai didi

ruby-on-rails - 如何查询activerecord的select_value方法?

转载 作者:行者123 更新时间:2023-11-29 11:39:49 25 4
gpt4 key购买 nike

谁能告诉我如何在 select_value 中编写查询。

我试过了,

    ActiveRecord::Base.connection.select_value("select count(*) from leave_details where status= 'Pending' and 'employeedetails_id'=25")

但是显示错误

   invalid input syntax for integer: "employeedetails_id".

我正在使用 PostgreSQL。

最佳答案

单引号用于在 PostgreSQL 中引用字符串(以及所有其他甚至假装尊重 SQL 标准的 SQL 数据库)所以你说的是这样的:

some_string = some_integer

当你这样做时:

'employeedetails_id'=25

这没有任何意义:如果不进行显式类型转换,就无法比较字符串和整数。您根本不需要引用该标识符:

ActiveRecord::Base.connection.select_value(%q{
select count(*)
from leave_details
where status = 'Pending'
and employeedetails_id = 25
})

如果您甚至确实需要引用标识符(可能区分大小写或包含空格),那么您将在 PostgreSQL 中使用双引号。


显然,您将列创建为 "EmployeeDetails_id",因此它区分大小写。这意味着您始终必须使用这种情况,并且始终必须将其双引号:

ActiveRecord::Base.connection.select_value(%q{
select count(*)
from leave_details
where status = 'Pending'
and "EmployeeDetails_id" = 25
})

我建议修改您的表格以不使用​​混合大小写标识符:

  1. 它们违背了标准的 Ruby/Rails 命名。
  2. 它们强制您在使用混合大小写的列名称的任何地方都使用双引号。
  3. 它们违背了标准的 PostgreSQL 实践。

这会让你一遍又一遍地绊倒。

关于ruby-on-rails - 如何查询activerecord的select_value方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com