• ベストアンサー

データベースの並び替え

VB+ACCESS2000です。 データの並び替えを昇順にしたいのですが,どうもデータがばらばらにならんでうまくいきません。 データの中身は全て、漢字で書いてあるんですけど、どうなんですかね。 ORDER BY 名前 ASC ってかいて、 データは 名前      渡辺      阿部      佐藤      中村   っていうふうにデータがバラバラに出てきます。漢字を使って並び替えをしたら、だめなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#2497
noname#2497
回答No.1

漢字、特に人名でのソートはばらばらになりますね。 本当は並んでいるんですが、コード値の順番なので、読み順には並びません。 それに人名は同じ漢字でも読み方が違うことがありますから無理です。 ひらがな(カタカナ)の読みも登録して、並び替えはそれで行なう方法で行なう必要があると思います。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

コンピュターの基礎論を思い出して下さい。 漢字も数字も文字列の数字もビット1か0の並びで表されています。 2つのデータのそれぞれ先頭バイト(イメージ的には左端)の左端のビットから1ビットずつ比べていき、(A)0と0の場合は次ビットに勝負持ち越し、(B)0と1の場合は0の前者が勝ちで先、(c)1と0の場合は0のほう後者が勝ちで先、(D)先に比較するビットがなくなった(長さが短い)ときは、前者が勝ちになります。(昇順の時「勝ち」は早い順序に並ぶと言うこと。) 数字の場合意識しなくても良いのは、0、1、・・・9の順にコード(体系)を設定してくれているからです。JISでも何コードでもこの点は、ソウしなくては大混乱する。 また英数字と半角カナはその順序と同じになるようにコード化されています。ただカナの半濁点濁点の件は悩ましい が。 漢字はほぼ読みの順に並べてコンピュターコード化(ビット列に)されているが、通常、漢字は音訓の2種類以上の読み方があるため、名前は特に色々な読み方をするため、そのどちらか日本の人間の常識的苗字・名前の読み方のようにコンピュターでやれというのは無理なんです。(例 原 はら、わら、げん)そのため振り仮名をふるわけです。

関連するQ&A

  • 漢字での並び替え

    お世話になります。 漢字文字が設定されているフィールドをSQL文にて昇順に並び替えて表示しようとしております。 昇順で並び替えを行った場合、「佐藤」より「大井」が後に表示されてしまうのですが、「大」→「佐」順に並び替えることは出来ないのでしょうか? 何方かご存知でしたらお教え下さい。 宜しくお願い致します。

  • データの並び替え

    こんにちは。 AccessVBAでつまづいてしまったので、ご教授お願いします。 以下にプログラムの動作手順を書きます。 1、CDに入っている4つのCSVファイルをそれぞれ別のテーブルにインポート。 2、その4つのテーブルのデータをグループ化して「wkマスタ」に追加クエリを利用して追加。 3、全て追加されたら、商品ID の昇順で「wkマスタ」のレコードを並び替え。 3の並び替えを下のように書きました。 DoCmd.RunSQL "SELECT 商品ID,商品名称カナ,商品名称漢字 FROM wkマスタ ORDER BY 商品ID ASC;" そしたら「"RunSQL/SQLの実行"アクションを実行するには、 SQLステートメントからなる引数を指定する必要があります」 と注意されました。 これはどういう意味でしょうか?またどうしたら問題なく並べ替えできますか?教えてください。

  • MSQLにおいての並び替えについて

    MySQLについての質問です。 MySQLのバージョンは4.1.20です。 テーブル +----+-------+-------+ | id | A | B | +----+-------+-------+ | 1 | 80223 | 80505 | | 2 | 80223 | 81017 | | 3 | 80410 | 0 | | 4 | 80110 | 80731 | | 5 | 80223 | 0 | | 6 | 80223 | 81223 | | 7 | 80410 | 80510 | | 8 | 80110 | 80630 | +----+-------+-------+ 並び替え後 +----+-------+-------+ | id | A | B | +----+-------+-------+ | 3 | 80410 | 0 | | 7 | 80410 | 80510 | | 5 | 80223 | 0 | | 6 | 80223 | 81223 | | 2 | 80223 | 81017 | | 1 | 80223 | 80505 | | 4 | 80110 | 80731 | | 8 | 80110 | 80630 | +----+-------+-------+ idはプライマリーキーです。 A、B共に数値(int)です。 Aには「0」という値は入りません。Bには「0」が入る可能性があります。 並び替えの条件としては 1.A 降順 2.B 0 3.B 降順 4.id 昇順 です。 イメージとしては SELECT * FROM `hoge_table` ORDER BY `A` DESC , `B` = 0 , `B` DESC , `id` ASC なのですが、結果としては、 +----+-------+-------+ | id | A | B | +----+-------+-------+ | 7 | 80410 | 80510 | | 3 | 80410 | 0 | | 6 | 80223 | 81223 | | 2 | 80223 | 81017 | | 1 | 80223 | 80505 | | 5 | 80223 | 0 | | 4 | 80110 | 80731 | | 8 | 80110 | 80630 | +----+-------+-------+ という風に並んでしまいます。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • Excelのテーブルで並び替えがうかくいかない

    Excelのシートにテーブル化したデータがあります。これを50音で並び替え、かつ名前で並び替えを行っています。 50音、名前 い、井上 う、内山 い、伊藤 い、井上 あ、安藤 50音を昇順で並び替えるとあいうえお順にならびかわります。名前のみで並び替えを行うと、こちらも正しく並び替えが行うことができます。 困っているのは、50音で優先並び替えを行って、名前で並び替えを行うと以下のようになってしまいます。 50音、名前 あ、安藤 い、井上 い、伊藤 い、井上 う、内山 井上さんがかたまって表示されると思ったら、かたまって表示されませんでした。 このデータはサンプルデータなので正確ではないですが、名前がかたまって並び替えられないのがわかりません。どういったことが考えられるでしょうか?

  • ListViewのソートについて

    SQL文では "ORDER BY [項目1] ASC, [項目2] ASC" というように並び替えの優先順位に沿ってソートする事が出来ますが、 ListViewで同じようにソートすることは可能でしょうか? 1つの項目のみを対象にしたソートなら出来るのですが… バージョンはVB.NETになります。 ご教授よろしくお願い致します。

  • 並び替えで教えて下さい。

    並べ替えで悩んでます。ご教授下さい。 下記のようなA、B、Cというフィールドがあり それぞれデータが入っているとします。 取得する際の並び替えですが、 A B C --------------------- aaa 1 6 bbb 1 5 ccc 1 4 aaa 2 4 bbb 2 6 ccc 2 5 ORDER BY Aとすると・・・ aaa 1 6 aaa 2 4 bbb 1 5 bbb 2 6 ccc 1 4 ccc 2 5 ORDER BY Bとすると・・・ aaa 1 6 bbb 1 5 ccc 1 4 aaa 2 4 bbb 2 6 ccc 2 5 ORDER BY Cとすると・・・ aaa 2 4 ccc 1 4 bbb 1 5 ccc 2 5 aaa 1 6 bbb 2 6 となります。 私がやりたいのは下記の順で並べ替えしたいのです。 ccc 1 4 ccc 2 5 bbb 1 5 bbb 2 6 aaa 1 6 aaa 2 4 つまりORDER BY B、Cの結果の1つ目のレコードの AでGROPE BYするような感じです。 方法をご教授頂きたいと思います。 よろしくお願いします。

  • 検索時に並び替えを無効にするには?

    初めまして、nana0224と申します 現在Postgresql8.2で開発中なのですが 複数検索で検索した場合その検索値順で取得したいのですが 可能でしょうか? order byは昇順か降順しかなく無効にする事は出来ないのでしょうか? シーケンスを発行しても並び替えをしてからなので意味がありませんでした。 select * from A where id in(7,9,4,6) ↑この(7,9,4,6)の順で取得したいのですが・・ すみませんが皆様良いお知恵をよろしくお願い致します。<m(__)m>

  • word2003で、名前を五十音順に昇順で表の並べ替えをするんですが、

    word2003で、名前を五十音順に昇順で表の並べ替えをするんですが、なぜか下の順のようになります。長嶋と田中が昇順で並び変えできないのです。列を選んで、並び変えダイアログで 五十音順、昇順を 指定しています。どこか間違いがあるのでしょうか。 井上 佐藤 長嶋 田中

  • 並び変えについて教えてください

    (ID, name, age)という3つのデータがあり、 それを select * from mydb order by name とすると名前順にできるのですが 同名の人の場合は年齢順に表示させたいのですが どうしたら出来ますか?

    • ベストアンサー
    • MySQL
  • 【Access】条件によって並び替えの順序を変えたい

    【Access】条件によって並び替えの順序を変えたい メイン画面(フォーム)で検索条件を指定し、「検索」ボタンをクリック ↓ 検索結果(フォーム)を表示 しています。 メイン画面で並び替えを「昇順、降順、並び替えなし(ID順)」と選択(オプションボタン)しており、次のような処理をしています。 (1)クエリによる抽出(並び替え以外の条件で) (2)並び替えなしの場合はレコードソースを "SELECT * FROM クエリ" とする (3)並び替えありの場合はレコードソースに ORDER BY を追加 (2)、(3)の処理はVBAでおこなっています。 しかしながらこの方法では後々の画面遷移の際に不都合が生じてしまいました。 そこで条件によって並び替えの仕方を変えるところもクエリに含めたいと 思いましたが、方法がわかりません。 ご存知の方がいらっしゃいましたら、ご教示ください。

専門家に質問してみよう