この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-05-12 10:46:43

タイトル: Laravelにおけるorder by句のキャスト
SEOタイトル: Laravelにおけるorder by句のキャスト

Laravelで文字列カラムを数値として並び替えたいときは、orderByRaw() でキャストを明示します。

たとえば 1, 2, 10 のような値を文字列のまま並び替えると 1, 10, 2 になってしまうため、数値順にしたい場合はキャストが必要です。

前提

文字列カラム colA を、並び替え時だけ数値として扱いたいケースを想定します。

キャスト例

$tweets = DB::table('test_table')
    ->orderByRaw('CAST(test_table.colA AS signed) DESC')
    ->get();

使い分けの考え方

  • MySQL系なら CAST(... AS signed) が分かりやすい
  • 小数を扱うなら整数型ではなく適切な型へキャストする
  • 頻繁に使うなら、保存時点で数値型カラムにしておく方が安全

注意点

  • DB製品によってキャスト構文が少し異なる
  • 文字列に数値以外が混ざっていると、期待した順序にならないことがある
  • orderByRaw() は生SQLになるため、外部入力をそのまま埋め込まない