niki12260714の日記

フリーランスのITエンジニアの呟き。

MySQLでソートを任意に制御する方法

文字列でソートする場合、普通にやると「AaBbCc」と並びますが、これを「ABCabc」とソートした場合のやり方。
MySQLはソートにcaseを使えるので、それを利用します。

ORDER BY CASE
 WHEN ソート文字列 REGEXP '[A-Z]' then 0
 WHEN ソート文字列 REGEXP '[a-z]' then 1
 ELSE 99
END ASC

REGEXP正規表現を利用して大文字A~Zとの一致を示しています。
こうやって大文字、小文字に重みを振り分ければ、任意の順番にソートが可能。