従来のsql-statementをSequel-versionに置き換えたいのですが、解決する問題があり、連結フィールドを作成します。
例:
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
しかし、どうすれば文字列を連結できますか?