• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ソート。内容の一部を置換して出来るか)

MySQLデータベースのソート方法

このQ&Aのポイント
  • 株式会社や有限会社などの記号を省いた状態で、MySQLのデータベースをソートする方法を教えてください。
  • MySQLのデータベースでテーブルのフィールドをソートする際、株式会社や有限会社などの記号を省いた状態でソートすることは可能でしょうか?
  • MySQLデータベースのテーブルをソートする際、フィールドの内容から株式会社や有限会社などの記号を除外する方法を教えてください。

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

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.3

select * from usr_tbl ・・・ order by replace(・・replace(company,'株式会社',''),'(株)','')・・・・ ・・はreplace( ・・・・は,'有限会社など対象外にしたい文字列','') 有限会社株式会社 なんていう会社名があるとうまくうごきませんが、 まずないでしょう。 >全件抽出後に、独自でソートしたほうが速いのでしょうか? 全件抽出後に、独自でソートしたほうが早いかもしれません。 こちらは私はよくわかりません。 試してみてもらわないと。 replace関数の説明 http://oss.timedia.co.jp/show/MySQL%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E6%97%85/REPLACE()%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E4%B8%80%E9%83%A8%E3%82%92%E7%BD%AE%E6%8F%9B%E3%81%99%E3%82%8B ## MYSQL使う環境がないので、 ## 確認はしていません。 ## また、MYSQLの方言は分かっていないので ## Order by でかけるのは、select句の中の項目だけとかなら、 ## select句中に書いてas XXで名前をつけてそれでorder byしてください。

mm666
質問者

お礼

ありがとうございました。 replaceで対応することができました。 複数置換したい場合のreplaceの書き方が分からなかったので、 非常に助かりました。

その他の回答 (2)

回答No.2

正しくソートするには、別途「読みフィールド」が必要ですね。 「清和コーポレート」を「セイワコーポレート」と読むか「シンワコーポレート」と読むか、漢字のみでは判らないので「セ」か「シ」のどちらで読むかの判断材料である「読みフィールド」が必要です。 この辺りをきちんとしないと、顧客から「清和コーポレートが『シ』の所に出てこないバグがあるので直して欲しい」と言われ、困った事になります。

mm666
質問者

お礼

ありがとうございます。 確かに読み用のフィールドがないと正しくソートは出来ないと気づきました。 今回は社内だけで使っているものなので、そのあたりはどうにかなりそうですが、 次回からは社名や氏名でソートをする可能性があるときは 設計時に盛り込むように注意したいと思います。 助かりました、ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ソート用のフィールドをつくっておいて、 INSERT するときに不要な文字列を削除して登録しておくのがベター。 order by 句でreplace()関数を使うこともできますが インデックスも効かないし効率はわるいとおもいます

mm666
質問者

お礼

ありがとうございます。 replaceだとインデックスも効果なくなるのですね。 今回は社内の小さなシステムであるということもあり、 インデックスは設定されていませんでしたが、次回以降注意して行きます。 助かりました、ありがとうございます。

関連するQ&A