2012-03-01 11 views
1

Sequelの適切な構文は、SQL配列値のスライスで注文するのは何ですか?SequelのSQL配列スライスでの注文方法は?

SELECT 
    a,    -- column with SQL array values 
    depth, 
    name 
FROM 
    nodes 
ORDER BY 
    a[0:depth], name -- sort by 'a' ignoring last element, then by 'name' 

は続編では、私が行うことができます::

DB[:nodes].select(:a, :depth, :name).order(:a, :name) 

のが、:aのすべてのことで、この種類、必要に応じていない[0:depth]スライス

は、ここで私はSQLで何をしたいのです。適切な構文は何ですか?

答えて

1

これは動作します:

DB[:nodes].select(:a, :depth, :name).order('a[0:depth]'.lit, :name) 

任意のより良い提案?

+2

これは最善の方法のようです。 SequelのDSLは '[0:depth]'構文をサポートしていません。あなたは ':a.sql_subscript( '0:depth'.lit)'を実行することができますが、それはあまり買わないでしょう。 –

+0

ありがとう@ジェレミー! – jwfearn