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

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

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

エラーが発生しました。

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

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

【番外編】ライトノベルで学ぶMySQL入門(小説家になろう版)~CHINPOが長すぎる~

作者: 野宮諒

今年は梅雨になるのが早いらしい。ここのところずっと雨が降り続いている。

かったるい授業のあと、俺はいつものように部室に顔を出した。

するとノートPCを広げて、愛華が困り顔をしていた。

「どうした、愛華?」

「それが、CHINPOが長すぎるんですよ!」

「は?」

CHINPOが長すぎる。いったいどういう状況なのだろう?

愛華がネットで漫画を読んでいて、その男性キャラのCHINPOが長すぎて迷惑なのだろうか?

話を聞いてみると、MySQLの話だった。エロい漫画ではなさそうである。

「これを見て下さい!」愛華はディスプレイをこちらへ向けた。

ノートPCには、コマンドプロンプトが表示されている。


select id,note,length(note) from menu;

id|note|length(note)

1|CHINPO|7


「MySQLでSELECTした結果か。それがどうした?」

「よく見て下さい。CHINPOの長さが『7』になってます!」

「あ、文字列の長さな。紛らわしい。CHINPO文字列は6になるはずだな。うーん……」

何かの画面から入力した値をMySQLに格納するのだが、その値を見ていて愛華がそれに気づいたらしい。

MySQLのLENGTH()は文字列の長さをバイト単位で返す関数だ。正しく動いていない気がする。

「どうしたの?CHINPO、CHINPOって叫んで。廊下まで聞こえてるわよ!」

真琴が入ってきた。こいつなら何かわかるかもしれない。

俺はこれまでの経緯を誠に説明した。

「そうね。HEX()を使えば何かわかるかも」

「HEX()って何ですか?」愛華が聞く。

「引数の文字列の16進数文字列表現を返すわ。とりあえずちょっとPCいじらせて」

そして真琴がカタカタとPCのキーボードを叩く。

結果は次のようになった。


select id,note,length(note),hex(note) from menu;

id|note|length(note)|hex(note)

1|CHINPO|7|4348494E504F00


「4348494E504F00ってのが16進数表現なのか?」俺は聞く。

「そうよ。16進数で43はC、48はH、49はI、4EはN、50はP、4FはO」

「最後の00は何なんですか?」

「これはnull文字よ」

「何かの拍子にnullが混入したってことか」

「そう。だから文字数が合計で7になってしまったわけ。CHINPOヌルヌルになってしまったわけだわ」

「CHINPOヌルヌルがオチかよ……」








今回はMySQLのカラムに不正な文字が混入し、文字列の長さが合わないという現象について書いてみました。

そもそも不正な文字が入らないようにする工夫が大事ではあったりしますね。

業務でこんな「不正なデータが混入したかも?」という現象に遭遇したら、今回のようなテクニックが役立つかもしれません。

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

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

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

↑ページトップへ