勉強したことのメモ

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

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

   2024/02/25  MySQL

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

  関連記事

MySQLで「Incorrect integer value: '' for column」エラーの対応方法
MySQLで「Incorrect integer value: '' for column」エラーの対応方法

MySQLで「Incorrect integer value: '' for c ...

MySQLでデータがあれば上書き、無ければ挿入する
MySQLでデータがあれば上書き、無ければ挿入する

既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...

SSH接続でMySQLにダンプファイルをインポートする方法
SSH接続でMySQLにダンプファイルをインポートする方法

phpMyAdminやAdminerが入っていなかったり、ダンプファイルのサイズ ...

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

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

MySQLでパターンマッチの逆
MySQLでパターンマッチの逆

LIKE検索の逆ってなったのでメモ。 NOT LIKE '%あああ%' が正解み ...