C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.70473 の関連記事表示

<< 0 >>
■70473  ソートについて
□投稿者/ MMC -(2014/03/31(Mon) 09:44:38)

    分類:[データベース全般] 


    Field
    001A
    0010
    001B
    002A
    002B
    0020

    上記のようなデータを下記の様にソートしたい

    Field
    0010
    001A
    001B
    0020
    002A
    002B

    SELECT * FROM TABLE ORDER BY Field
    しても、

    Field
    001A
    001B
    0010
    002A
    002B
    0020

    SELECT * FROM TABLE ORDER BY
    CASE
    WHEN SUBSTR(Field ,4) BETWEEN '0' AND '9' THEN 1
    WHEN SUBSTR(Field ,4) BETWEEN 'A' AND 'Z' THEN 2
    ELSE 0
    END
    すると、

    Field
    0010
    0020
    001A
    001B
    002A
    002B

    になり、ソートできません
    SQLに詳しい方よろしくお願いします。

     
親記事 /過去ログ120より / 関連記事表示
削除チェック/

■70475  Re[1]: ソートについて
□投稿者/ shu -(2014/03/31(Mon) 10:16:38)
    No70473 (MMC さん) に返信

    1文字目から3文字目はOrder Byで並び替えられるなら
    1〜3桁と4桁を分離します。これを仮にORD1,ORD2とします。
    ORD1はそのままソート
    ORD2は提示されたような考え方で希望のソート順に変換(仮にORD3とします)
    とすれば
    Order By ORD1, ORD3
    でソートできるかと思います。
記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/

■70477  Re[1]: ソートについて
□投稿者/ a -(2014/03/31(Mon) 10:20:08)
    2014/03/31(Mon) 10:28:36 編集(投稿者)

    No70473 (MMC さん) に返信
    > 上記のようなデータを下記の様にソートしたい
    >
    > Field
    > 0010
    > 001A
    > 001B
    > 0020
    > 002A
    > 002B
    >
    SELECT * FROM TABLE ORDER BY Field asc

    SQL Server 2012 なら上記構文で理想とするデータを取得できます。
    質問主が使用しているDBは何ですか?

    # 追記(2014/3/31 10:28)
    1桁目にも数字とかアルファベットが来ることもあるのでしょうか。(例だと4桁目のみ数値、アルファベット混在。)
    データを取得した後にプログラム側でソートすることはできますか。
    それともSQLでソートできていないとまずいのかな?
記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/

■70478  Re[1]: ソートについて
□投稿者/ WebSurfer -(2014/03/31(Mon) 10:29:34)
    No70473 (MMC さん) に返信

    細かい質問をする前に、データーベースは何かとか、フィールドの型は何かとか、照合順序は
    どうなっているか等を書いた方がいいのではないですか?
記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/

■70483  Re[1]: ソートについて
□投稿者/ ぶなっぷ -(2014/03/31(Mon) 11:01:07)
    つうか、Fieldの値ってどう見ても16進数だよね。
    数値データを文字列データとしてテーブルに保存してる辺りがすでに間違い。

    とにかく、まずは数字に変えよう。
    既存データがあるなら、コンバーターを作って変換しよう。

    数値データを文字列データとしてテーブルに保存なんて、
    少なくとも私が上司なら却下。
記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/

■70485  Re[2]: ソートについて
□投稿者/ ぶなっぷ -(2014/03/31(Mon) 11:08:03)
    なお、

    数値データにした上で、コード上で
    string.Format("{0:X4}", 0x00A1) // C#の場合
    とかすれば、元通りの文字列になる。

    No70483 (ぶなっぷ さん) に返信
    > つうか、Fieldの値ってどう見ても16進数だよね。
    > 数値データを文字列データとしてテーブルに保存してる辺りがすでに間違い。
    >
    > とにかく、まずは数字に変えよう。
    > 既存データがあるなら、コンバーターを作って変換しよう。
    >
    > 数値データを文字列データとしてテーブルに保存なんて、
    > 少なくとも私が上司なら却下。
記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/

■70486  Re[2]: ソートについて
□投稿者/ shu -(2014/03/31(Mon) 11:15:35)
    No70483 (ぶなっぷ さん) に返信
    > つうか、Fieldの値ってどう見ても16進数だよね。
    > 数値データを文字列データとしてテーブルに保存してる辺りがすでに間違い。
    >
    これは何ともいえない、提示コードが仕様にあったものなら
    A〜Zという条件は16進数ということにはならない。
    また型番のような情報なら文字列で保存するのも普通
記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/

■70490  Re[3]: ソートについて
□投稿者/ ぶなっぷ -(2014/03/31(Mon) 12:08:09)
    言いたいことは分からんでもないけど、
    言葉尻をとっての揚げ足取りにしか聞こえない。

    > また型番のような情報なら文字列で保存するのも普通
    というところまで考えが及んでいるのであれば、
    型番情報ならアルファベット順ソートが普通であり、16進数であるかの
    ようなソート方法は却下ではないのでしょうか?

    結論として、
    第一に質問者の情報が足らない。
    Fieldは何のデータを表すのか?

    仮に、Fieldが16進数なら文字として保存は却下
    仮に、Fieldが型番として16進数っぽくソートは却下

    ということです。
記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/

■70491  Re[4]: ソートについて
□投稿者/ shu -(2014/03/31(Mon) 12:46:28)
    No70490 (ぶなっぷ さん) に返信

    >>また型番のような情報なら文字列で保存するのも普通
    > というところまで考えが及んでいるのであれば、
    > 型番情報ならアルファベット順ソートが普通であり、16進数であるかの
    > ようなソート方法は却下ではないのでしょうか?
    別にそういう仕様にしたいのならそれはそれで実装すればよいことであって
    他人が却下することではないかと思います。MMC さんが関わっているシステムでは
    その並び替えによって業務効率がよくなるのかもしれません。
    アドバイスなら問題ないと思います。


    >
    > 結論として、
    > 第一に質問者の情報が足らない。
    > Fieldは何のデータを表すのか?
    これは全くそのとおりだと思います。ここがはっきりすれば
    ぶなっぷ さんの言う『却下』が実際どうなのか明確になると思います。
    また内容によっては私が先に回答した並び替えでも足りないかもしれません。



    他、No70490について
    同様にアドバイスならよいと思いますが他人が却下するようなものでは
    ないかと思います。実はもうデータがかなり入っていて今回仕様追加などで
    ソートを行おうと思ったら発生した問題とかだったら却下とか言われても
    いまさらデータ構造変更するわけにはいかないとかも考えられるかと思います。

記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/

■70492  Re[5]: ソートについて
□投稿者/ ぶなっぷ -(2014/03/31(Mon) 13:21:08)
    たぶん、shuさんが言いたいのは、
    > 他人が却下することではないかと思います。
    に尽きるのでしょう。

    しかし、私自身、高圧的であっても決して押しつけはしていません。

    「少なくとも私が上司なら却下」としか言っていません。
    仕様を満たせば良いというだけの状況下なら却下する理由はありません。

    なお、以下に関してはすでに回答済み。
    > いまさらデータ構造変更するわけにはいかないとかも考えられるかと
    > 思います。

    ソフトウェアのバージョンアップで下位互換性がなくなることなど
    日常茶飯事。
    > 既存データがあるなら、コンバーターを作って変換しよう。
    ということです。

    なお、
    質問者を置き去りにして話が進んでいますので、この件に関する私の
    回答はこれで打ち切りとします。
記事No.70473 のレス /過去ログ120より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -