MySQLでtext型カラムに入っている数値をint型としてソートする
2024/02/25
MySQLでtext型として指定されているカラムがあり、その中には文字列であったり数値であったり色々入っていた。具体的にはWordPressのpostmetaテーブルでmeta_keyで絞って、meta_valueは数値だけを抽出できたんだけど、文字列扱いなのかORDER BYでソートできなかった。
対応方法
以下で形変換することで解決。
SELECT * FROM table WHERE meta_key LIKE 'hogehoge' ORDER BY CAST(meta_value AS SIGNED) DESC
リファレンス
https://dev.mysql.com/doc/refman/5.6/ja/cast-functions.html#function_cast
数値変換以外にも日時や文字列、バイナリ型とかもあるみたい。
関連記事
-
-
MySQLのTEMPORARY TABLE(テンポラリテーブル)で高速化を図る方法
MySQLで5000万件ぐらいデータが入っているテーブルから日本語検索しないとい ...
-
-
MySQLのintのカラムで2147483647の値
MySQLでintのカラムに数値を入れると「2147483647」という値になっ ...
-
-
MySQLでREGEXPについて
SQL文にREGEXPというのを見てこれ何? となったのでメモ。 ■参考サイト ...
-
-
MySQLで指定の順にデータをソートする方法(ORDER BY FIELD)
MySQLで指定した順にソートしてデータを取り出したい。通常だと主キーだったり何 ...
-
-
MySQLで日時や日付で範囲検索する際に動作速度を向上させる方法
MySQLでログ系等の大量にデータが格納されているテーブルから日時や日付で範囲検 ...