none
SQL 自分の希望の並び替えにしたいのですが RRS feed

  • 質問

  • SQLのデータ

    TABLE1テーブルのデータに
    列 種類があり、

    値が
     梅
     竹
     松

    というように都道府県が入っています。
    これを

     松
     竹
     梅
    の順番に並び替えたいのですがどうのようにしたらいいでしょうか?

    SELECT * FROM TABLE1 ORDER 種類 だと、あいうえお順になり希望のとおりにはいきません。
    どのようにしたらいいのでしょうか?
    よろしくお願いします。

    2009年10月12日 11:11

回答

  • SELECT * FROM TABLE1 
    ORDER BY CASE 種類
     WHEN '松' THEN 1
     WHEN '竹' THEN 2
     WHEN '梅' THEN 3
     ELSE 999 END;
    こんなんでどーでしょ
    jzkey
    • 回答としてマーク komi1 2009年10月19日 10:31
    2009年10月13日 13:49

すべての返信

  • 希望する並び順で
     1 .. 松
     2 .. 竹
     3 .. 梅
    と決めておいて、TABLE1には数値を格納すればいいのでは。
    2009年10月12日 12:02
  • それは考えて、数字にして
    GridViewに表示するときに
     1 .. 松
     2 .. 竹
     3 .. 梅と表示するようにしたのですが

    結局は、松などの変換後の順で並び替えてしまうので
    数字にしても思うような順番にすることができませんでした。

    何か方法はないでしょうか?よろしくお願いします。

    2009年10月13日 13:09
  • SELECT * FROM TABLE1 
    ORDER BY CASE 種類
     WHEN '松' THEN 1
     WHEN '竹' THEN 2
     WHEN '梅' THEN 3
     ELSE 999 END;
    こんなんでどーでしょ
    jzkey
    • 回答としてマーク komi1 2009年10月19日 10:31
    2009年10月13日 13:49
  • 最初の質問にGridViewについて言及されていませんでしたし…。
    数字と名前の両方を入れておき、数字の方が非表示にして並べ替えのために使うのはどうでしょうか?

    jzkeyさん
    その方法でもGridViewに取り込んだ後で再ソートできませんから。
    メンテナンス性もちょっと…。
    2009年10月14日 12:13
  • ありがとうございます。
    希望通りの並び替えが実現することができました。

    CASE などが使用できるんですね。

    すみません。お聞きしたいのですが
    もし、

    ・LEFTのように左2桁分だけを表示したい場合
    などもできるのでしょうか?

    2009年10月16日 14:55