Accessテキストデータのソートの仕様について

このQ&Aのポイント
  • Accessのテキストデータのソート仕様について悩んでいます。入力されたデータに対して昇順でソートすると一貫性がなさそうな順番に並んでしまいます。
  • 例えば、フィールドに以下のようなデータが入力されている場合、ソート結果は9-0001、90-001、900-1、9-1のようになってしまいます。
  • このような並び方になる理由や解決方法をご存知の方はいますか?
回答を見る
  • ベストアンサー

Access テキストデータのソートについて

Accessでのテキストデータのソートの仕様で悩んでます。 例を挙げると・・・ テキスト型のフィールドに対し以下のようなデータを入力します。 フィールド1 9-1 9-001 9-0001 90-1 90-001 900-1 900-11 9000-1 9001-1 90000-1 ここでフィールド1を昇順でソートをすると 90000-1 9-0001 90-001 9000-1 9-001 900-1 900-11 9001-1 90-1 9-1 という順になってしまい、並び方に一貫性が無いように思えます。 なぜこのような並びになってしまうのか? お判りになられる方、いらっしゃいませんか??

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

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

ID_fld1 3__9-0001 2__9-001 4__90-1 1__9-1 これは、文字列を右詰した場合の昇順の反対の並びですね。 で、実際に文字列を右詰めすると次のように並びます。 [イミディエイト] ? XXXXX ("SELECT FORMAT(fld1, '@@@@@@@@') FROM tab1 ORDER BY FORMAT(fld1, '@@@@@@@')",,vbCrLF)    9-1;   90-1;   9-001;  9-0001; ところで、これでも多少の違和感があるかも知れません。 そこで、ハイフォンの前後で文字列を分割して前で並べ、さらに後で並べると? ? XXXXX("SELECT fld1 FROM tab1 ORDER BY CutStr(fld1, '-', 1), CutStr(fld1, '-', 2)",,vbCrLF) 9-0001; 9-001; 9-1; 90-1; この両者は、Access ではサポートされていませんのでユーザが工夫する必要があります。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function

yukarin000
質問者

お礼

早速のご回答、有難うございました。 ただ、当方、初心者なもので教えて頂いた内容を理解するのに 時間がかかりそうです。 ちなみに私の素人考えとしては 昇順の場合、文字列の左から順番に見比べて ハイフォン(-)、数字(0.1.2...)、文字(a.b.c....)の 順にソートがかかるのかな??と思っていたもので。 (判り難い説明でスミマセン) しかし、実際いろんかケースで実験してみると、バラバラな 結果が出てきてしまうので、どういう法則でそうなるのかが 知りたいです。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

ハイフォンの前後で文字列を分割して、かつ、数字に変換して、前で並べ、さらに後で並べると? は、割愛しています。

関連するQ&A

  • ソートについて

    過去にも似たような質問を立てさせて頂いておりますが、今回はちょっと違うのかな?と思い、Qさせて頂きます。 jcode.plを使ってCGIを作成しています。 @data=(13,5,7,2,10,9,6)というデータがあり、これを下記のように何パターンかにしたいのです。(データの数字はサンプルです) 例:5-7-13、2-7-13、2-5-7、・・・etc 何を言いたいかというと、「フィールド1 - フィールド2 - フィールド3」や、「フィールド2 - フィールド3 - フィールド4」、「フィールド1 - フィールド3 - フィールド4」というように区切り、それを昇順にソートさせたいのです。 このような場合の記述方法を御教え願えますでしょうか?

    • ベストアンサー
    • CGI
  • Access2010のsortについて

    Access2010でデータベース内のデータをsortしたいのですが、意図するようにsortできません。 どのように処理すればよいか、お知恵をお貸しください。 具体的な内容は以下のとおりです。  sortする項目は住所の番地以降のデータです。   10-2    5-6   1-12   1-6 上田マンション101 というデータを   1-6 上田マンション101   1-12   5-6   10-2 というふうに並べ替えたいのですが、単純にsortすると   1-12   1-6 上田マンション101   10-2   5-6 となります。   01-06 とか ” 1- 6”のように桁の位置を意識して登録すれば うまくsortできるのでしょうが、住所を入力する立場からすると不自然で 面倒だと思います。 データを変換しないで、うまくsortする方法はないでしょうか?

  • ピボットテーブルを複数項目でソートしたい

    ピボットテーブルに展開したデータを、表示している複数の行項目 によりソートすることは可能でしょうか? 行項目として以下が設定されており、  1.科目  2.仕入先  3.購入種類 列項目としては  4.仕入月 データとしては  5.仕入金額 並べ替え変えたい順序としては、 科目毎の年間仕入金額が多い順の購入種類昇順としたいので、 以下のように設定したいのですが、 ピボットテーブル フィールド詳細オプションでは 1項目しかソート順に指定することができません。  1.科目昇順⇒5.合計/仕入金額降順⇒3.購入種類昇順 上記のようなソートを行う方法はありますでしょうか?

  • ACCESS クエリーでソートの不具合

    ACCESS2000 ACCESS クエリーでソートの不具合 Xテーブル 品コード 明細番号 昇順   昇順 作成したテーブルを見ると一部 111 01 111 02 111 03 222 01 333 01 111 04 <=分かれて表示されている。 データは3000件程あるのですが、アクセスの不具合? データはグループでは集計されるのでヌルが入っていたりはしません。 体験のある方いらしゃいますか?

  • ACCESSの並べ替え

    ACCESSで住所録を作っています。 データの並べ替えをしたいのです。 ただし昇順ではなく、「親戚」「ゴルフ」「その他」「会社」の順にしたいです。 以上4つのデータは「所属」フィールドに入力してあります。 なのでデザインクエリの「並べ替え」で「昇順」にすると 「会社(か)」「ゴルフ(ご)」「親戚(し)」「その他(そ)」の順になって さらに隣の「フリガナ」のところを「昇順」にすると それぞれの中で昇順になります。 さきほど書いた、「親戚」「ゴルフ」「その他」「会社」の順(自分の思う順番)に したいときはどのように設定すればよいのでしょうか? 教えてください。よろしくお願いいたします。

  • Access2000 ソート順について

    埼玉県、神奈川県、千葉県、東京都 この四県を昇順にソートすると、なぜか「サ行」がトップにきます。 (質問のとおりの並びになります。) なぜなのか、お分かりの方がいたら教えていただけないでしょうか?

  • Access97でテーブルのデータを並べ替える方法

    Access97で(OSは98)テーブルで入力したデータをクエリーで並べ替えをかけるのですが、 そのフィールドのデータを昇順、降順以外で自分の思うような順番で 並べ替えることができますか? 例) パソコン、デジタルカメラ、プリンタ、メディアのような順番で。。。 今後他のテーブルと結合するのでこれら以外にコード番号を入力する フィールドを作り、これらをこの順番で入力すればよいのかもしれませんが Excelのユーザー設定リストを並べ替えで使うような機能がAccessにあったかと思いまして。よろしくお願いいたします。

  • FMPro7『テキスト+数字』フィールドのソートができません。

    ファイルメーカーPro7でデータベースを作成し、シリアル番号を入力しています。 17ABC001、17ABC002、17ABC003 … という具合に『年度+固有記号+通し番号』としているのですが、 これを通し番号順にするためソートをかけたところ、まるででたらめに並んでしまいます。 フィールドタイプはテキストで、全て半角で入力してあります。 データベース作成途中に追加したフィールドなので、自動入力にはしてません。 どうしたら解決できますか? どなたか助けてください(>_<;)

  • stringのデータ型はメモ型とテキスト型どちらがいいのでしょうか?

    こんばんは。 アクセスで 100文字のデータを入力したい場合、 フィールドのデータ型は テキスト型にしてフィールドサイズを100にするのと、 メモ型にするのとどちらがいいのでしょうか?

  • アクセスでのテキストデータ取り込みについて

    アクセスでテキストデータを取り込む際でのご質問がございます。 外部データからテキストデータを指定して 文字コードを指定して指定フィールドを文字列(テキスト型)として取り込もうとする際 例 取り込み前のデータ(文字列の後ろにスペースを含んだ半角20桁の文字列)    "1234567‐11‐2‐3 " "1234567‐234 " " "   *投稿画面ではスペースが表示されません)   文字列(テキスト型)として取り込んだデータ    "1234567‐11‐2‐3" "1234567‐234" "" となりスペースが消されてしまうのですが スペースが消されないでテキストデータを 取り込める方法をご存知の方いらっしゃいますでしょうか? どうぞよろしくお願いします。

専門家に質問してみよう