Ruby Sequel是否具有与SQL“ coalesce”功能等效的功能?

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

在SQL中,为了避免获得NULL值,我可以使用“ coalesce”函数来替代它,如下所示:

SELECT COALESCE(some_column, 0) FROM some_table;  

但是我无法找到任何方法来使用Sequel做同样的事情。

ruby sequel coalesce
2个回答
8
投票

DB[:some_table].select{coalesce(some_column, 0)}


1
投票

另一个语法版本是Sequel.function(:coalesce,:some_column,5)

示例:

require 'sequel'
Sequel.extension :pretty_table    
DB = Sequel.sqlite
DB.create_table(:mytables){
  primary_key :id
  field :a, :type => :nvarchar, :size => 10
  field :some_column, :type => :fixnum
}

DB[:mytables].insert(:a => 'a1', :some_column => 10)
DB[:mytables].insert(:a => 'a2')

Sequel::PrettyTable.print(
  DB[:mytables].select(:a, :some_column, Sequel.function(:coalesce,:some_column,5))
)

结果:

+--+--------------------------+-----------+
|a |coalesce(`some_column`, 5)|some_column|
+--+--------------------------+-----------+
|a1|                        10|         10|
|a2|                         5|           |
+--+--------------------------+-----------+
© www.soinside.com 2019 - 2024. All rights reserved.