勉強したことのメモ

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

  関連記事

MySQLでSELECT時にインデックスを指定する方法
MySQLでSELECT時にインデックスを指定する方法

MySQLでインデックスを作成しているのにSELECT時に使用されていないという ...

phpmyadminからプロセスの停止
phpmyadminからプロセスの停止

重たいSQL文を叩いた際、どうにも処理できず メモリ使用率が100%から下がらな ...

WordPressで記事本文の特定のリンク(aタグのhref)を一括置換する方法
WordPressで記事本文の特定のリンク(aタグのhref)を一括置換する方法

WordPressで記事本文の特定のリンクを「old_url」から「new_li ...

MySQLでテキスト(日本語、半角英数字)を暗号化・復号化する方法
MySQLでテキスト(日本語、半角英数字)を暗号化・復号化する方法

MySQLでデータを登録する際に暗号化したいというケースがあった。対象のデータは ...

MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法
MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法

先日PHPで画像を比較して類似度を算出する「image-comparator」ラ ...