1

我想用 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      

但是我怎样才能连接一个字符串?

4

1 回答 1

6

只需查看字符串运算符的Sequels 文档

sel = DB[:test].select(
  Sequel.join(['1', :text]).as(:concat)
  )
puts sel.sql
puts sel.all

(备注:回答你自己的问题是一件好事——我需要一些时间来得到它)。

于 2013-01-10T16:51:08.130 回答