我想用 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].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 我得到一个语法错误(can't convert Symbol into String (TypeError)
:
sel = DB[:test].select(
('1' + :text).as(:concat)
)
有趣的是,这再次起作用:
sel = DB[:test].select(
(:text + '1' + :text).as(:concat)
)
puts sel.sql
puts sel.all
但是我怎样才能连接一个字符串?