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でSELECT時にインデックスを指定する方法
MySQLでインデックスを作成しているのにSELECT時に使用されていないという ...
-
-
phpmyadminからプロセスの停止
重たいSQL文を叩いた際、どうにも処理できず メモリ使用率が100%から下がらな ...
-
-
WordPressで記事本文の特定のリンク(aタグのhref)を一括置換する方法
WordPressで記事本文の特定のリンクを「old_url」から「new_li ...
-
-
MySQLでテキスト(日本語、半角英数字)を暗号化・復号化する方法
MySQLでデータを登録する際に暗号化したいというケースがあった。対象のデータは ...
-
-
MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法
先日PHPで画像を比較して類似度を算出する「image-comparator」ラ ...