• ベストアンサー

order by 2カラムの先頭1文字で並替可能?

order byする際、2カラムの先頭1文字で判断して、並べ替えることは可能でしょうか? ■想定 ・titleカラム ・yomiカラム ※運用案 案1 「titleカラム」先頭1文字目に漢字が入っているときだけ、yomiカラムにカタカナでフリガナを振る 案2 「titleカラム」先頭1文字目に漢字が入っているときは必ず、yomiカラムにカタカナでフリガナを振る

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

  • ベストアンサー
noname#212058
noname#212058
回答No.2

MySQL にも COALESCE 関数は存在するので、使えます。 ただし、先の回答にも書きましたが、この方法でいけるのは、 『title カラムの先頭1文字目が漢字ではない場合、  yomi カラムは null である 』 という条件が満たされるデータの場合だけ、ということに注意 してください。 質問者さんの案1も案2も、『先頭1文字目が ”漢字ではない”』 場合のデータがどうなるかが明示されていませんので、実際に 使用できるかどうか、私には直接判断できません。

re97
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

その他の回答 (1)

noname#212058
noname#212058
回答No.1

このような質問の場合は、使用しているデータベースを提示して ください。質問の内容は ORACLE でも PostgreSQL でも Access でも可能ですが、SQL の書き方がそれぞれ異なります。 『title カラムの先頭1文字目が漢字ではない場合、yomi カラムは null 』 という仕様であるならば、話はもう少し簡単になります。 PostgreSQL ならばこんな感じ。 order by coalesce(yomi, title) もっとも、パフォーマンスは期待できません。 ( データが増えたときに 『実行速度が遅くて使い物になりません』 になる  という可能性があります )

re97
質問者

補足

回答ありがとうございます。 >このような質問の場合は、使用しているデータベースを提示してください ・次回から気をつけます ・知りたかったのはMySQLについてです ・MySQLもこれでいけるでしょうか?

関連するQ&A