knu*_*nut 1 ruby concat concatenation sequel
我想用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
Run Code Online (Sandbox Code Playgroud)
这很好用,结果是:
SELECT (`text` || '1') AS 'concat' FROM `test`
{:concat=>"aa1"}
{:concat=>"bb1"}
{:concat=>"cc1"}
Run Code Online (Sandbox Code Playgroud)
我的问题:我需要'1aa'.使用SQL这没有问题:
puts DB.fetch("SELECT ('1' || `text`) AS 'concat' FROM `test`").all
Run Code Online (Sandbox Code Playgroud)
但是对于ruby我收到了语法错误(can't convert Symbol into String (TypeError)
:
sel = DB[:test].select(
('1' + :text).as(:concat)
)
Run Code Online (Sandbox Code Playgroud)
有趣的是,这再次有效:
sel = DB[:test].select(
(:text + '1' + :text).as(:concat)
)
puts sel.sql
puts sel.all
Run Code Online (Sandbox Code Playgroud)
但是如何连接字符串呢?
只需查看Sequels文档到String Operators即可
sel = DB[:test].select(
Sequel.join(['1', :text]).as(:concat)
)
puts sel.sql
puts sel.all
Run Code Online (Sandbox Code Playgroud)
(注:回答你自己的问题是一件好事 - 我需要一些时间才能得到它).
归档时间: |
|
查看次数: |
1317 次 |
最近记录: |