Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用sequel将字符串与表字段合并_Ruby_Concatenation_Concat_Sequel - Fatal编程技术网

Ruby 如何使用sequel将字符串与表字段合并

Ruby 如何使用sequel将字符串与表字段合并,ruby,concatenation,concat,sequel,Ruby,Concatenation,Concat,Sequel,我想用一个续集版本替换一个旧的sql语句,但在创建一个具体字段时遇到了一些问题 例如: require 'sequel' DB = Sequel.sqlite DB.create_table(:test){ field :text, :type => :nvarchar, :size => 5 } DB[:test].insert('aa') DB[:test].insert('bb') DB[:test].insert('cc') sel = DB[:test].selec

我想用一个续集版本替换一个旧的sql语句,但在创建一个具体字段时遇到了一些问题

例如:

require 'sequel'
DB = Sequel.sqlite
DB.create_table(:test){
  field :text, :type => :nvarchar, :size => 5
}
DB[:test].insert('aa')
DB[:test].insert('bb')
DB[:test].insert('cc')


sel = DB[:test].select(
  (:text + '1' ).as(:concat)
  )
puts sel.sql
puts sel.all
这很好,结果是:

SELECT (`text` || '1') AS 'concat' FROM `test`
{:concat=>"aa1"}
{:concat=>"bb1"}
{:concat=>"cc1"}
我的问题是:我需要“1aa”。对于SQL,这是没有问题的:

puts DB.fetch("SELECT ('1' || `text`) AS 'concat' FROM `test`").all
但使用ruby时,我遇到了一个语法错误,无法将符号转换为字符串TypeError:

有趣的是,这又起作用了:

sel = DB[:test].select(
  (:text + '1' + :text).as(:concat)
  )
puts sel.sql
puts sel.all      
但是我怎样才能定义一个字符串呢?

只要看看字符串操作符就知道了

sel = DB[:test].select(
  Sequel.join(['1', :text]).as(:concat)
  )
puts sel.sql
puts sel.all
备注:-我需要一些时间才能得到它。

请看字符串运算符

sel = DB[:test].select(
  Sequel.join(['1', :text]).as(:concat)
  )
puts sel.sql
puts sel.all
备注:-我需要一些时间来得到它