勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLでtext型カラムに入っている数値をint型としてソートする

   2024/02/25  MySQL / MariaDB

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 / MariaDB

  関連記事

mysqldumpが使えないレンタルサーバでMySQLのバックアップ
mysqldumpが使えないレンタルサーバでMySQLのバックアップ

mysqldumpが使えないレンタルサーバで開発を行うことがあり、尚且つ他社に使 ...

MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法
MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法

以前にMySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法 ...

MySQLにてUUIDを発行しプライマリキー(主キー)にする方法
MySQLにてUUIDを発行しプライマリキー(主キー)にする方法

普段MySQLでプライマリキー(主キー)を使う場合、オートインクリメントを利用し ...

MySQLでdatetime型にもインデックスを使用して高速化を図る方法
MySQLでdatetime型にもインデックスを使用して高速化を図る方法

ログ関連のデータを格納するテーブルがあり、集計を行う際に非常に時間がかかった。レ ...

MySQLで大文字小文字
MySQLで大文字小文字

半角英数字のみのフォームで入力した値を検索した際、 データに差異が発生。 [Aa ...