2011-09-28
order by句の生成 / DBIx::Customリファレンス
DBIx::Custom::Orderクラスを利用するとorder by句を簡単に記述することができます。たとえば、デフォルトの順序を最初に指定しておいて、状況に応じて順序をカスタマイズすることが簡単にできます。
DBIx::Custom::Orderオブジェクトを生成するには、orderメソッドを使用します。
my $order = $dbi->order;
DBIx::Custom::Orderオブジェクトが取得できます。
並びを指定するにはprependメソッドを使用します。order by句のパーツが前へ前へと追加されていきます。
$order->prepend('title', 'price desc'); $order->prepend('author desc');
最終的にorder句で利用する文字列に変換するにはto_stringメソッドを利用するか、DBIx::Custom::Orderオブジェクトを文字列として評価します。
my $order_str = $order->to_string; my $order_str = "$order";
次のようなorder句が生成されます。
order by author desc, title, price desc
では次に同名の列名を含むものをさらにprependして見ましょう。
$order->prepend('price asc');
この場合には、priceが二つ存在しますが、DBIx::Custom::Orderオブジェクトは、重複を適切に処理してくれます。後で追加されたものが優先されます。文字列化すると次のようなorder by句が生成されるのが確認できます。
order by price asc, author desc, title
もし並びの順序が固定されている場合はDBIx::Custom::Orderオブジェクトを使わずに直接記述するのが簡単です。並びの順序を動的に変えたい場合にDBIx::Custom::Orderオブジェクトを利用しましょう。
トラックバック - http://d.hatena.ne.jp/perlcodesample/20110928/1320416975
リンク元
- 38 http://www.google.co.jp/url?sa=t&rct=j&q=perl ファイル作成&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/perlcodesample/20080519/1211252829&ei=t3u0TuHbDor4mAXdvoTHAw&usg=AFQjCNFPIo3XHPTwIJc
- 16 http://www.google.co.jp/url?sa=t&rct=j&q=perl 正規表現&source=web&cd=3&ved=0CD8QFjAC&url=http://d.hatena.ne.jp/perlcodesample/20100827/1278596435&ei=uOCzTsOhIcTJmQW75fDLAw&usg=AFQjCNHHIVghZ1T6iZYmdwB1bCoHJ464fA
- 16 http://www.google.co.jp/url?sa=t&rct=j&q=perl 配列 最小&source=web&cd=1&ved=0CCkQFjAA&url=http://d.hatena.ne.jp/perlcodesample/20080114/1200305034&ei=IKW0TpuYIbCZmQWKvsHUAw&usg=AFQjCNFrwuCzu6d0cuv389-vPaXY
- 16 http://www.google.co.jp/url?sa=t&rct=j&q=perl+%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%80%80%E8%A4%87%E6%95%B0%E8%A1%8C&source=web&cd=3&ved=0CDkQFjAC&url=http://d.hatena.ne.jp/perlcodesample/20080
- 14 http://www.google.co.jp/url?sa=t&rct=j&q=コマンドプロンプト utf8&source=web&cd=1&ved=0CCMQFjAA&url=http://d.hatena.ne.jp/perlcodesample/20080706/1215291523&ei=yRC0TqG0HKbgmAXH-5X
- 14 http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/perlcodesample/20081116/1226844755&ei=gwO0TtXkJ5HJmQXW083sAw&usg=AFQjCNG89s7d1Udwd2goOPhvjqM4eCsR9w&sig2=E2_pN00fer6lk-ha9BeV4g
- 12 http://www.google.co.jp/url?sa=t&rct=j&q=perl ハッシュ 矢印&source=web&cd=4&ved=0CEgQFjAD&url=http://d.hatena.ne.jp/perlcodesample/20100930/1278596435&ei=OxC0TvOdL7DJmAWysajTAw&usg=AFQjCNGyoldjqPt_
- 12 http://www.google.co.jp/url?sa=t&rct=j&q=perl+%E3%83%87%E3%83%90%E3%83%83%E3%82%B0&source=web&cd=1&ved=0CCUQFjAA&url=http://d.hatena.ne.jp/perlcodesample/20100302/1269670120&ei=O5O0ToXDCsafmQWFt8zIAw&usg=AFQjCNH-J98HD
- 9 http://www.google.co.jp/url?sa=t&rct=j&q=httpd.conf 場所&source=web&cd=1&ved=0CCUQFjAA&url=http://d.hatena.ne.jp/perlcodesample/20091010/1246679588&ei=Xwq0TqHXOeidmQWP5fDRAw&usg=AFQjCNEPkv7JwSsYzU-FckxA4eZ0NcfxaQ&sig2=Ts2VhqE1W
- 9 http://www.google.co.jp/url?sa=t&rct=j&q=perl デリファレンス ハッシュ&source=web&cd=1&ved=0CB4QFjAA&url=http://d.hatena.ne.jp/perlcodesample/20080218/120334