勉強したことのメモ

webプログラマが勉強したことのメモ。

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

   

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

  関連記事

MySQLiでFOUND_ROWS(全件数取得)

MySQLiでFOUND_ROWS(全件数取得)。 $sql = ' SELEC ...

MySQLで検索した件数の取得

ページングとかで必要になる総件数について、 いつもググってしまっていたのでメモ。 ...

MySQLでIPアドレスを数値として入れると変になる

MySQLでIPアドレスをINET_ATON関数を用いてINT型に変換し格納する ...

phpMyAdminでテーブルの操作

table_aと同じ構造のtable_bを作りたい時、 手動で作成するか、tab ...

MySQLのエラーメール送付

MySQLエラーを取得してエラーメール送付。 <? error_repor ...

MySQLiでINSERT文

MySQLiでINSERT文 ■ソース $mysqli = new mysqli ...

MySQLで全角半角を区別せずに検索する方法(collate utf8_unicode_ci)

あるシステムでMySQLの検索時に「WHERE test_column coll ...

WordPressでデータベース接続確立エラー

WordPressで「データベース接続確立エラー」というエラー表示がされた。大抵 ...

MySQLiで直近に挿入したオートインクリメントの値と次回挿入する値を取得する方法

phpとmysqliを使っている中で次回挿入するオートインクリメントの値と、前回 ...

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

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