電子書籍の厳選無料作品が豊富!

order byする際、2カラムの先頭1文字で判断して、並べ替えることは可能でしょうか?

■想定
・titleカラム
・yomiカラム

※運用案
案1
「titleカラム」先頭1文字目に漢字が入っているときだけ、yomiカラムにカタカナでフリガナを振る
案2
「titleカラム」先頭1文字目に漢字が入っているときは必ず、yomiカラムにカタカナでフリガナを振る

A 回答 (2件)

MySQL にも COALESCE 関数は存在するので、使えます。




ただし、先の回答にも書きましたが、この方法でいけるのは、

『title カラムの先頭1文字目が漢字ではない場合、
 yomi カラムは null である 』

という条件が満たされるデータの場合だけ、ということに注意
してください。

質問者さんの案1も案2も、『先頭1文字目が ”漢字ではない”』
場合のデータがどうなるかが明示されていませんので、実際に
使用できるかどうか、私には直接判断できません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/15 16:52

このような質問の場合は、使用しているデータベースを提示して


ください。質問の内容は ORACLE でも PostgreSQL でも Access
でも可能ですが、SQL の書き方がそれぞれ異なります。

『title カラムの先頭1文字目が漢字ではない場合、yomi カラムは null 』
という仕様であるならば、話はもう少し簡単になります。
PostgreSQL ならばこんな感じ。

order by
coalesce(yomi, title)

もっとも、パフォーマンスは期待できません。
( データが増えたときに 『実行速度が遅くて使い物になりません』 になる
 という可能性があります )

この回答への補足

回答ありがとうございます。

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

補足日時:2013/04/08 14:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!