- ベストアンサー
order by 2カラムの先頭1文字で並替可能?
order byする際、2カラムの先頭1文字で判断して、並べ替えることは可能でしょうか? ■想定 ・titleカラム ・yomiカラム ※運用案 案1 「titleカラム」先頭1文字目に漢字が入っているときだけ、yomiカラムにカタカナでフリガナを振る 案2 「titleカラム」先頭1文字目に漢字が入っているときは必ず、yomiカラムにカタカナでフリガナを振る
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
MySQL にも COALESCE 関数は存在するので、使えます。 ただし、先の回答にも書きましたが、この方法でいけるのは、 『title カラムの先頭1文字目が漢字ではない場合、 yomi カラムは null である 』 という条件が満たされるデータの場合だけ、ということに注意 してください。 質問者さんの案1も案2も、『先頭1文字目が ”漢字ではない”』 場合のデータがどうなるかが明示されていませんので、実際に 使用できるかどうか、私には直接判断できません。
その他の回答 (1)
このような質問の場合は、使用しているデータベースを提示して ください。質問の内容は ORACLE でも PostgreSQL でも Access でも可能ですが、SQL の書き方がそれぞれ異なります。 『title カラムの先頭1文字目が漢字ではない場合、yomi カラムは null 』 という仕様であるならば、話はもう少し簡単になります。 PostgreSQL ならばこんな感じ。 order by coalesce(yomi, title) もっとも、パフォーマンスは期待できません。 ( データが増えたときに 『実行速度が遅くて使い物になりません』 になる という可能性があります )
補足
回答ありがとうございます。 >このような質問の場合は、使用しているデータベースを提示してください ・次回から気をつけます ・知りたかったのはMySQLについてです ・MySQLもこれでいけるでしょうか?
お礼
回答ありがとうございました。 大変参考になりましたー