我在一个无法测试它的环境中,我在互联网上找不到任何信息或任何例子。
假设我有这样的声明:
ActiveRecord::Base.connection.select_values("select a from table_b where id = 'x'")
(我知道不建议使用其他方法来处理数据库)
如果某些行的列'a'为NULL,那么我在ruby中有什么? “空”,无或其他?
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
使用ActiveRecord,它最有可能依赖于您拥有的数据库。我确实尝试了你的查询和Postgres数据库,如果返回的id为2和3,它会显示[]
empty数组或[2,3]
。请随意共享数据库类型。