表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。

【番外編】ライトノベルで学ぶMySQL入門(小説家になろう版)~chinpoの最大値がMAX()で取れない~

作者: 野宮諒

暑かった夏も終わり、秋の空気など感じながら、いつものように部室のドアを開ける。

「お、もういたのか、真琴」

と俺。

そこにはノートPCの前で腕を組み、鼻の下に鉛筆を挟み、『実際にこんなポーズ取るやついるのか?』ってポーズをしている真琴がいた。

「あ、ちょうどいいところに来たわね。コウタ」

「何がちょうどいいんだ?」

真琴のノートPCには、MySQLのコンソールが表示されている。

「それがね、chinpoの最大値が得られないのよ!」

「はあ?チンポの最大値がどうしたって?」

まったく、何のことだかわからない。

「ハロウィンの衣装の発注をしようと思って、参加者のサイズデータをデータベースにまとめてたとこなの」

「それで?」

「man_tblっていうテーブルがあって、idとchinpoってカラムがあるわ」

真琴はSELECT文で一覧を出す。


select * from man_tbl;

+------+--------+

| id | chinpo |

+------+--------+

| 1 | 15 |

| 2 | 10 |

| 3 | 40 |

| 5 | 45 |

| 6 | 180 |

+------+--------+


chinpoが45とか180とか、単位は何だ?まあいいか。


「ここでchinpoの最大値を求めるわ」


SELECT MAX(chinpo) FROM man_tbl;


+-------------+

| MAX(chinpo) |

+-------------+

| 45 |

+-------------+


「あれ?MAX()って最大値求めるんだよな?180にならないのか」

「そう、そこよ。180が出てほしいのに45になるわ」

「ほう、chinpoですか!」

振り向くと黒髪の美少女、愛華がいた。

「「わっ」」

俺と真琴は急に現れた愛華に驚く。

「ごめんなさい、びっくりさせちゃって。バイトの前にちょっと部室に寄ろうと思って」

真琴はさっき俺に説明した内容と同じことを愛華に説明した。

「SHOW CREATE TABLEしてもらっていいですかぁ?」と愛華。

結果はこうなる。


SHOW CREATE TABLE man_tbl\G

*************************** 1. row ***************************

Table: man_tbl

Create Table: CREATE TABLE `man_tbl` (

`id` int(11) DEFAULT NULL,

`chinpo` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1


「これは、chinpoがvarchar型だからですよ。文字列扱いだから正しく最大値が取れないんです。だから……」

「わかったわ!整数型にキャストね」

真琴は新たにSQLを発行する。


SELECT MAX(CAST(chinpo AS UNSIGNED)) FROM man_tbl;

+-------------------------------+

| MAX(CAST(chinpo AS UNSIGNED)) |

+-------------------------------+

| 180 |

+-------------------------------+


正しく最大値が取れたようだ。

「このUNSIGNEDって何だ?」

「整数型ってことよ。今回は0と正の数しか値の対象にしないからUNSIGNEDにしたわ。つまり文字列であるchinpoの値を整数に変換して最大値を求めたわけね」

「マイナスがあったらどうするんだ?」

「その場合、UNSIGNEDの代わりにSIGNEDにするのがいいわね」

それにしても、ハロウィンの衣装でchinpoのサイズが必要とは、どんな衣装なんだろう……。

ともあれ、ハロウィンのイベントの準備は順調に進みそうだ。

MySQLのvarchar型のカラムに数字が入っている場合、MAX()では正確に最大値を取れないです。

この場合に本編ではキャストをする例を挙げました。

が、そもそもとして数字しか入らないカラムはINT型やBIGINT型といった、数値のみ受け入れる型にすべきですね。

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ