当列为NULL时ActiveRecords返回什么值?

问题描述 投票:1回答:2

我在一个无法测试它的环境中,我在互联网上找不到任何信息或任何例子。

假设我有这样的声明:

ActiveRecord::Base.connection.select_values("select a from table_b where id = 'x'")

(我知道不建议使用其他方法来处理数据库)

如果某些行的列'a'为NULL,那么我在ruby中有什么? “空”,无或其他?

ruby-on-rails ruby
2个回答
3
投票

Ruby只有一个值为nil。与其他语言相比,这是Matz绝对正确的一件事。

在大多数情况下,适配器将SQL中的NULL值映射到nil

如果你的列默认值不是nil(比如说“或”),结果将不会为零,因为在Ruby中没有任何东西可以与nil相提并论(与一些非常流行但设计不佳的语言不同)。

irb(main):003:0> nil == ""
=> false
irb(main):004:0> nil == 0
=> false
irb(main):005:0> nil == false
=> false
irb(main):006:0> !!nil
=> false

0
投票

使用ActiveRecord,它最有可能依赖于您拥有的数据库。我确实尝试了你的查询和Postgres数据库,如果返回的id为2和3,它会显示[]empty数组或[2,3]。请随意共享数据库类型。

© www.soinside.com 2019 - 2024. All rights reserved.